النتائج 1 إلى 8 من 8
الموضوع: request mql code
- 09-06-2013, 03:35 PM #1
request mql code
please any coder can help me
i need code for add hidden trailingstop from broker
thanks in advance
- 09-06-2013, 09:32 PM #2
أخي deloryan لا أعتقد ان ذلك ممكن
ولكن يبقى الفصل للأستاذ أسامة أو أحد الأخوة الأكارم
- 09-06-2013, 09:59 PM #3
رد:request mql code
Find it in Mr Osama EA Attached , otherways u can use close by Cents profit or loss for single trade
- 09-06-2013, 10:12 PM #4
, is the inner trailing in the ea, data can be stored in a variable, this is for when the broker uses a stoplevel high and you can not modify orders with short stops
- 09-06-2013, 10:38 PM #5
no need modify only u can put regular stoploss profit 0 or hi level to cover ur target then u will close via hidden point or $
- 10-06-2013, 02:20 AM #6
رد:request mql code
الفكره في أنك ستقوم بدلا من عمل مودفاي للأمر ووضع الأستوب الجديد يمكنك عمل مصفوفه وكلما تغير الأستوب تقوم بوضع الاستوب الجديد في المصفوفه ثم تستخدم دالة الإغلاق العاديه عندما يصل السعر إلى الأستوب
مثال قمت بعمل دالة لحفظ أسعار الأستوب الجديده في مصفوفتين قمت بتعريفهم تحفظ رقم التيكيت وسعر الأستوب للصفقه
بإسم
كود PHP:static double SellOrdersArray[0][2];
static double BuyOrdersArray[0][2];
كود PHP:void HiddenTrailingStop()
{
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
int ticket=OrderTicket();double SL=OrderStopLoss();double openprice=OrderOpenPrice();
if(OrderSymbol()==Symbol()&&TrailingStop>0)
{
if(OrderType()==OP_BUY)
{
if(Ask>openprice+TrailingStop*point&&SL<Bid-TrailingStop*point||SL==0)
{
double newprice=Bid-TrailingStop*point;
ModifyNewTrailingStop(ticket,newprice,BuyOrdersArray);
}
}
if(OrderType()==OP_SELL)
{
if(Bid<openprice-TrailingStop*point&&SL>Ask+TrailingStop*point||SL==0)
{
newprice=Ask+TrailingStop*point;
ModifyNewTrailingStop(ticket,newprice,SellOrdersArray);
}
}
}
}
}
كود PHP:void ModifyNewTrailingStop(int ticket,double newprice,double& array[][])
{
int size=ArraySize(array);
for(int i=0;i<size;i++)
{
if(array[i][1]==ticket)
{
array[i][0]=newprice;
return;
}
}
ArrayResize(array,size+1);
array[size][0]=newprice;
array[size][1]=ticket;
}
كود PHP:void CloseTrailingStop()
{
HiddenTrailingStop();
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
int ticket=OrderTicket();
if(OrderSymbol()==Symbol())
{
if(OrderType()==OP_BUY)
{
for(int j=0;j<ArraySize(BuyOrdersArray);j++)
{
if(ticket==BuyOrdersArray[j][1])
{
if(Bid<BuyOrdersArray[j][0])
{
OrderClose(ticket,OrderLots(),Bid,3);
CleanTheArray(j,BuyOrdersArray);
}
break;
}
}
}
if(OrderType()==OP_SELL)
{
for(j=0;j<ArraySize(SellOrdersArray);j++)
{
if(ticket==SellOrdersArray[j][1])
{
if(Ask>SellOrdersArray[j][0])
{
OrderClose(ticket,OrderLots(),Ask,3);
CleanTheArray(j,SellOrdersArray);
}
break;
}
}
}
}
}
}
كود PHP:void CleanTheArray(int index,double& array[][])
{
int size=ArraySize(array);
for(int i=index+1;i<size;i++)
{
array[i][0]=array[i-1][0];
array[i][1]=array[i-1][1];
}
ArrayResize(array,size-1);
}
كود PHP:if(TrailingStop>0)CloseTrailingStop();
- 10-06-2013, 07:21 PM #7
رد:request mql code
many thanks, this is my code
كود PHP:int TRAIL_virtual_2(int TrailingStop, int Nexp)
{
double Tr_SL,actv,salt;
Tr_SL = TrailingStop * Point;
datetime openTime;
double BID,ASK,SL,openPrice,PrecioMax,PrecioMin;
int i,j,BarrasMINUTO,result;
string NAME;
static int ORDENESant;
RefreshRates();
int Slippage=((ASK-BID)/Point)+1;
if( ORDENESant!=OrdersTotal() ) ObjectsDeleteAll( EMPTY, OBJ_HLINE);
ORDENESant=OrdersTotal();
for ( i = 0; i < OrdersTotal(); i ++)
{//for ( i
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if( OrderMagicNumber()==Nexp && OrderSymbol()==Symbol() )
{//if( OrderMagicNumber()
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
openPrice=NormalizeDouble(OrderOpenPrice(),Digits);
openTime=OrderOpenTime();
SL=NormalizeDouble(OrderStopLoss(),Digits);
BarrasMINUTO = (TimeCurrent()-openTime)/60;
//------ BUYs --------------
if( OrderType()==OP_BUY && TrailingStop>0 )
{
PrecioMax = 0; PrecioMin = Bid*1000;
NAME= "Stop Loss BUY: "+OrderTicket();
for( j=0; j<=BarrasMINUTO; j++ )
{ // Máximo y mínimo desde que se abrio la operación. ( BarrasMINUTO )
if( iHigh(Symbol(),PERIOD_M1,j)>PrecioMax )PrecioMax=iHigh(Symbol(),PERIOD_M1,j);
if( iLow(Symbol(),PERIOD_M1,j)<PrecioMin )PrecioMin=iLow(Symbol(),PERIOD_M1,j);
}
BID = NormalizeDouble(MarketInfo(Symbol(),MODE_BID),Digits);
if( PrecioMax>(openPrice+Tr_SL) ) {SL=PrecioMax-Tr_SL;}
if( SL>0 && BID<=SL )
{ result=OrderClose(OrderTicket( ),OrderLots(),BID,Slippage,Red);// Primer intento
if ( result==0 ){Sleep(131);result=OrderClose(OrderTicket( ),OrderLots(),BID,Slippage,Red);}// Segundo intento
if ( result==0 ){Sleep(173);result=OrderClose(OrderTicket( ),OrderLots(),BID,Slippage,Red);}// Tercer intento
if ( result==0 ){Sleep(191);result=OrderClose(OrderTicket( ),OrderLots(),BID,Slippage,Red);}// Cuarto intento
if ( result==0 ){Sleep(263);result=OrderClose(OrderTicket( ),OrderLots(),BID,Slippage,Red);}// Quinto intento
if ( result==1 ){Alert(OrderTicket()," BUY Cerrada."); ObjectDelete(NAME);}
}
else
{
ObjectDelete(NAME);
ObjectCreate(NAME, OBJ_HLINE, 0, 0, SL );
ObjectSet(NAME,OBJPROP_WIDTH, 1);
ObjectSet(NAME,OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet(NAME,OBJPROP_COLOR, Blue);
}
}
//------ BUYs --------------
//------ SELLs --------------
if( OrderType()==OP_SELL && TrailingStop>0 )
{
PrecioMax =0; PrecioMin = Bid*1000;
NAME= "Stop Loss SELL: "+OrderTicket();
for( j=0; j<=BarrasMINUTO; j++ )
{// Máximo y mínimo desde que se abrio la operación. ( BarrasMINUTO )
if( iHigh(Symbol(),PERIOD_M1,j)>PrecioMax )PrecioMax=iHigh(Symbol(),PERIOD_M1,j);
if( iLow(Symbol(),PERIOD_M1,j)<PrecioMin )PrecioMin=iLow(Symbol(),PERIOD_M1,j);
}
ASK = NormalizeDouble(MarketInfo(Symbol(),MODE_ASK),Digits);
BID = NormalizeDouble(MarketInfo(Symbol(),MODE_BID),Digits);
double spread = NormalizeDouble(ASK-BID,Digits);
if( PrecioMin<(openPrice-spread - Tr_SL) ) {SL = PrecioMin + Tr_SL;}
if( SL>0 && ASK>=SL )
{
result=OrderClose(OrderTicket( ),OrderLots(),ASK,Slippage,Red); // Primer intento
if ( result==0 ){Sleep(131);result=OrderClose(OrderTicket( ),OrderLots(),ASK,Slippage,Red);}// Segundo intento
if ( result==0 ){Sleep(173);result=OrderClose(OrderTicket( ),OrderLots(),ASK,Slippage,Red);}// Tercer intento
if ( result==0 ){Sleep(191);result=OrderClose(OrderTicket( ),OrderLots(),ASK,Slippage,Red);}// Cuarto intento
if ( result==0 ){Sleep(263);result=OrderClose(OrderTicket( ),OrderLots(),ASK,Slippage,Red);}// Quinto intento
if ( result==1 ){Alert(OrderTicket()," SELL Cerrada."); ObjectDelete(NAME);}
}
else
{
ObjectDelete(NAME);
ObjectCreate(NAME, OBJ_HLINE, 0, 0, SL );
ObjectSet(NAME,OBJPROP_WIDTH, 1);
ObjectSet(NAME,OBJPROP_STYLE, STYLE_DASHDOTDOT);
ObjectSet(NAME,OBJPROP_COLOR, Red);
}
}
//------ SELLs --------------
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
}//if( OrderMagicNumber()
}//for ( i
return;
}
- 21-01-2017, 06:10 PM #8
هل الاكسبيرت مضاعفات عكسية ؟؟