Liebe Leute, können Sie uns einen Rat geben? Wenn ich einen EA teste, werden die Trades im Log nicht geöffnet, Fehler 3: falsche Parameter. Was habe ich mit den benutzerdefinierten Funktionen falsch gemacht?
ticket=OrderSend(Symbol(),OP_SELLSTOP,Lots,Prices_install(),3,0,0,NULL,MAGICNUMBER,0,clrGreen);
if(ticket>0)//проверка открытия позиции
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
Print("SELL ордер открыт:",OrderOpenPrice());
}
elsePrint("Ошибка открытия ордера SELL:",GetLastError());
}
return;
}
}
//+---------------------------------------------------------------------------+//| Условия модификации ордеров |//+---------------------------------------------------------------------------+if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
//--- длинная позиция открытаswitch(OrderType())
{
case OP_BUYSTOP:
if(NormalizeDouble(OrderOpenPrice()-Prices_install(),Digits)>0 && NormalizeDouble(Prices_install()-Bid,Digits)>0)
{
if(OrderModify(ticket,Prices_install(),0,0,0,clrBlue))
Print("Цена Price_BUY ордера успешно модифицирована.");
elsePrint("Ошибка модификации ордера BUYStop. Код ошибки=",GetLastError());
}
elsePrint("Цена модификации выше цены ордера");
break;
case OP_SELLSTOP:
if(NormalizeDouble(Prices_install()-OrderOpenPrice(),Digits)>0 && NormalizeDouble(Ask-Prices_install(),Digits)>0)
{
if(OrderModify(ticket,Prices_install(),0,0,0,clrGreen))
Print("Цена Price_SELL ордера успешно модифицирована.");
elsePrint("Ошибка модификации ордера SELLStop. Код ошибки=",GetLastError());
}
elsePrint("Цена модификации выше цены ордера");
break;
case OP_BUY:
if(NormalizeDouble(StopLosse_install()-OrderStopLoss(),Digits)>0 && NormalizeDouble(Ask-StopLosse_install(),Digits)>0)
{
if(OrderModify(ticket,OrderOpenPrice(),StopLosse_install(),0,0,clrBlue))
Print("Цена Price_BUY ордера успешно модифицирована.");
elsePrint("Ошибка модификации ордера BUY. Код ошибки=",GetLastError());
}
elsePrint("Цена модификации выше цены ордера");
break;
case OP_SELL:
if(NormalizeDouble(OrderStopLoss()-StopLosse_install(),Digits)>0 && NormalizeDouble(StopLosse_install()-Bid,Digits)>0)
{
if(OrderModify(ticket,OrderOpenPrice(),StopLosse_install(),0,0,clrGreen))
Print("Цена Price_SELL ордера успешно модифицирована.");
elsePrint("Ошибка модификации ордера SELL. Код ошибки=",GetLastError());
}
elsePrint("Цена модификации выше цены ордера");
break;
}
}
}
Sleep(5);
}
return;
}
//+------------------------------------------------------------------+double StopLosse_install()
{
double StopLoss=iSAR(NULL,PERIODs_short_term,Step,Maximum,1);
double StopLoss_install;
int StopLevel=(int)MarketInfo(Symbol(),MODE_STOPLEVEL); // Минимально допустимый уровень стоп-лосса/тейк-профита в пунктахint FreezeLevel=(int)MarketInfo(Symbol(),MODE_FREEZELEVEL);//Уровень заморозки ордеров в пунктахswitch(OrderType())
{
case0:
if(Bid-StopLoss>FreezeLevel)
{
if(Bid-StopLoss>=StopLevel)
StopLoss_install=NormalizeDouble(StopLoss,Digits);
if(Bid-StopLoss<StopLevel)
StopLoss_install=NormalizeDouble(StopLoss-StopLevel*MarketInfo(Symbol(),MODE_DIGITS),Digits);
}
elsePrint("Цена открытия ордера находится в дистанции заморозки:",GetLastError());
break;
case1:
if(StopLoss-Ask>FreezeLevel)
{
if(StopLoss-Ask>=StopLevel)
StopLoss_install=NormalizeDouble(StopLoss,Digits);
if(StopLoss-Ask<StopLevel)
StopLoss_install=NormalizeDouble(StopLoss+StopLevel*MarketInfo(Symbol(),MODE_DIGITS),Digits);
}
elsePrint("Цена открытия ордера находится в дистанции заморозки:",GetLastError());
break;
}
return(StopLoss_install);
}
//+------------------------------------------------------------------+double Prices_install()
{
double Price=iSAR(NULL,PERIODs_short_term,Step,Maximum,1);
double Price_install;
int StopLevel=(int)MarketInfo(Symbol(),MODE_STOPLEVEL); // Минимально допустимый уровень стоп-лосса/тейк-профита в пунктахint FreezeLevel=(int)MarketInfo(Symbol(),MODE_FREEZELEVEL);//Уровень заморозки ордеров в пунктахswitch(OrderType())
{
case4:
if(Price-Ask>FreezeLevel)
{
if(Price - Ask>=StopLevel)
Price_install=NormalizeDouble(Price,Digits);
if(Price - Ask<StopLevel)
Price_install=NormalizeDouble(Price+StopLevel*MarketInfo(Symbol(),MODE_DIGITS),Digits);
}
elsePrint("Цена открытия ордера находится в дистанции заморозки:",GetLastError());
break;
case5:
if(Bid-Price>FreezeLevel)
{
if(Bid-Price>=StopLevel)
Price_install=NormalizeDouble(Price,Digits);
if(Bid-Price<StopLevel)
Price_install=NormalizeDouble(Price+StopLevel*MarketInfo(Symbol(),MODE_DIGITS),Digits);
}
elsePrint("Цена открытия ордера находится в дистанции заморозки:",GetLastError());
break;
}
return(Price_install);
}
//+------------------------------------------------------------------+
Was sind die Feinheiten der Verwendung von Schleifen bei Handelsentscheidungen durch den Expert Advisor? Grob gesagt, wenn es 20 Unterstützungs-/Widerstandsniveaus gibt, wird der EA korrekt funktionieren, wenn wir alle Niveaus mit für überprüfen? Oder ist es besser, die nächstgelegenen zu nehmen und es über if zu machen?
Bitte beraten Sie, wie man es so machen, dass auf mt4/5 Bars würde nicht zeigen, Öffnungen. DasEinzige, was angezeigt wird, ist die Schließung der Bar.
Können Sie mir sagen, wie ich die Statemnt-Charts verbinden kann? Zur Anzeige eines Diagramms für den Handel mit mehreren Währungen. Ich habe es schon lange irgendwo gesehen, aber ich kann es nicht mehr finden.
В настоящее время мультивалютных торговых систем, индикаторов и экспертов разработано огромное количество. Тем не менее, до сих пор создатели этого "огромного количества" сталкивались со специфическими для мультивалютных систем трудностями. С выпуском в свет терминала MetaTrader 5 и языка программирования MQL5 появилась возможность реализации...
Liebe Leute, können Sie uns einen Rat geben? Wenn ich einen EA teste, werden die Trades im Log nicht geöffnet, Fehler 3: falsche Parameter. Was habe ich mit den benutzerdefinierten Funktionen falsch gemacht?
Guten Tag, ich bitte um Hilfe zum Thema Parabel! Ich möchte mit dem Expert Advisor eine Logik erstellen, wie sie auf dem Bild zu sehen ist:
Ich schreibe den Code wie folgt:
Schauen Sie, ob ich irgendwelche Fehler gemacht habe, denn es stürzt ab ..... Vielen Dank!
Welche Art von Einlage sollte ich haben, um einen Gewinn von 100 Dollar pro Tag zu erzielen?
100 Pfund pro Tag und 0 Drawdown?
Wie hoch muss die Einlage sein, um einen Gewinn von 100 Dollar pro Tag zu erzielen?
Einzahlung $10! Erhalten Sie 1000% pro Tag und ziehen Sie einen Gewinn von $100 pro Tag ab!
Wie eröffne ich ein Demokonto mit meinem Investorennamen und Passwort auf MT4?
Es wird noch ein Server benötigt
Bitte beraten Sie, wie man es so machen, dass auf mt4/5 Bars würde nicht zeigen, Öffnungen. DasEinzige, was angezeigt wird, ist die Schließung der Bar.