المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : مهندس حسن .. مطلوب ..معادلة تتبع الربح بالدولار والبريك ايفن بالدولار



Adnan
29-06-2018, 05:55 PM
مهندس حسن .. مطلوب ..معادلة تتبع الربح بالدولار والبريك ايفن بالدولار

بحثت عنها لم اجدها

kira-h
30-06-2018, 05:18 PM
وعليكم السلام
التريلينغ والبريك ايفن بالدولار للزوج الحالي كالتالي :


input double TrailingStop_USD=0,
TrailingStep_USD=0,
BreakEvenUSD=0,
BreakEvenUSDTo=0;


void OnTick()
{
if(TrailingStop_USD>0&&TrailingStop_USD>=TrailingStep_USD)Trailing_USD();
BreakEven_USD();
}

void Trailing_USD()
{
if(TrailingStop_USD>0&&Profit_By_USD()>=TrailingStop_USD
&&((GlobalVariableGet(Symbol()+MagicNo+"Step")<(Profit_By_USD()-(TrailingStop_USD-TrailingStep_USD)))
||GlobalVariableGet(Symbol()+MagicNo+"Stop")==0))
{
GlobalVariableSet(Symbol()+MagicNo+"Stop",Profit_By_USD()-TrailingStop_USD);
GlobalVariableSet(Symbol()+MagicNo+"Step",Profit_By_USD()-(TrailingStop_USD-TrailingStep_USD));
}
if(Profit_By_USD()<=GlobalVariableGet(Symbol()+MagicNo+"Step")&&GlobalVariableGet(Symbol()+MagicNo+"Stop")!=0)
{
CloseOrders();
GlobalVariableDel(Symbol()+MagicNo+"Stop");
GlobalVariableDel(Symbol()+MagicNo+"Step");
}
}

void BreakEven_USD()
{
if(BreakEvenUSD>0&&Profit_By_USD()>=BreakEvenUSD&&BreakEvenUSD>BreakEvenUSDTo)
{
GlobalVariableSet(Symbol()+MagicNo+"BE",BreakEvenUSDTo);
}
if(Profit_By_USD()<=GlobalVariableGet(Symbol()+MagicNo+"BE")&&GlobalVariableGet(Symbol()+MagicNo+"BE")!=0)
{
CloseOrders();
GlobalVariableDel(Symbol()+MagicNo+"BE");
}
}






دالة الاغلاق :


void CloseOrders(int type=-1)
{
bool select,close;
for(int i=OrdersTotal()-1;i>=0;i--)
{
select=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrdersTotal()>0&&OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNo)
{
if(OrderType()==type||type==-1)
{
if(OrderType()==OP_BUY){close=OrderClose(OrderTick et(),OrderLots(),NormalizeDouble(Bid,Digits),30);}
if(OrderType()==OP_SELL){close=OrderClose(OrderTic ket(),OrderLots(),NormalizeDouble(Ask,Digits),30); }
if(OrderType()>OP_SELL){close=OrderDelete(OrderTicket());}
}
}
}
}


دالة الربح بالدولار

double Profit_By_USD(int type=-1) {
double pts;
for(int i=0;i<OrdersTotal();i++)
{
bool s=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
string sy=OrderSymbol();
int mn=OrderMagicNumber(),
ot=OrderType();
double pt=OrderProfit(),
sw=OrderSwap(),
cm=OrderCommission();
if(sy==Symbol()&&mn==MagicNo)
{
if(ot==type||type==-1)
{
pts+=pt+sw+cm;
}
}
}
return(pts);
}