Nein, ist es nicht. Es wurde sogar noch schlimmer :)
Verstehen Sie, RefreshRates() aktualisiert die Werte der vordefinierten Ask- und Bid-Variablen, Sie verwenden den einmal in der Price-Variablen gespeicherten Wert.
Verstanden :-) Ich dachte, auf den Preis wird nur zugegriffen, wenn die Ausführung in dieser Funktion OrderSend erreicht
int OpenPosition(string AdvisorName,int Position,int Magic,double Lots,double StopLoss){
int N; int Сount = 5; int Slippage = (CalculateSpread() * 2); double Price;
string PeriodString = GetPeriod(Period());
if(Position == OP_BUY){
string OrderName = StringConcatenate(AdvisorName," - Покупка по рынку");
string ErrorName = "Ошибка открытия ордера на покупку";
string CriticalErrorName = "Невозможно открыть ордер на покупку";
string MailCriticalErrorName = "Ошибка открытия"; color Arrow = Gold;}
if(Position == OP_SELL){
OrderName = StringConcatenate(AdvisorName," - Продажа по рынку"); ErrorName = "Ошибка открытия ордера на продажу";
CriticalErrorName = "Невозможно открыть ордер на продажу";
MailCriticalErrorName = "Ошибка открытия"; Arrow = YellowGreen;}
while(IsTradeContextBusy() || !IsTradeAllowed()){int Interval = MathRand()+1000;
Print("Торговый поток занят. Повторная проверка через "+DoubleToStr((Interval/1000),0)+" сек");
Sleep(Interval);} while(N < Сount){
if(Position == OP_BUY){RefreshRates(); Price = NormalizeDouble(Ask,Digits);}
if(Position == OP_SELL){RefreshRates(); Price = NormalizeDouble(Bid,Digits);}
int Ticket = OrderSend(Symbol(),Position,Lots,Price,Slippage,StopLoss,0,OrderName,Magic,0,Arrow);
if(Ticket > 0){if(OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES)){int Flag = 1;
PlaySound("recharge.wav"); break;}}
else{Flag = 0; int PRM = GetLastError(); string ERR = Error(PRM,"OrderSend()");
ErrorProcessing(AdvisorName+" "+PeriodString,ErrorName+" "+PRM+" ("+
Error(PRM,"OrderSend()")+")","","OrderSend()"); N++; Sleep(5000);}
if(N == Сount){ErrorProcessing(AdvisorName+" "+PeriodString,CriticalErrorName,
MailCriticalErrorName+" "+PRM+" ("+Error(PRM,"OrderSend()")+")","OrderSend()");}}
return(Flag);}
int BlackOrWhite(int countbar)
{
int result_=0;
if (iClose(NULL,0,countbar)-iOpen(NULL,0,countbar))
result_=1;
else
result_=-1;
if (iOpen(NULL,0,countbar)==iClose(NULL,0,countbar))
result_=0;
return(result_);
}
Funktion, ergibt aus irgendeinem Grund nur einen Wert + Compiler schwört :
Hallo. Ich brauche etwas Hilfe. Die Frage ist folgende:
Nachdem ein Auftrag ausgelöst wurde, müssen alle anderen Aufträge abgeschlossen werden, egal wie. Und wieder sollten sich durch den Zustand neue eröffnen.
OrderSend(Symbol(),OP_BUYLIMIT,0.1,cena_buy,3,sl_buy,tp_buy,"",14774,0,Blue); Alert (GetLastError()); // Fehlermeldung bei Orderaufgabe order_opened = true; // wenn die Order funktioniert hat, nicht erneut öffnen
Jetzt müssen wir nur noch einen neuen Auftrag eröffnen, nachdem der Auftrag abgewickelt wurde.
OrderSend(Symbol(),OP_BUYLIMIT,0.1,cena_buy,3,sl_buy,tp_buy,"",14774,0,Blue); Alert (GetLastError()); // Fehlermeldung bei Orderaufgabe order_opened = true; // wenn die Order funktioniert hat, nicht erneut öffnen
Jetzt müssen wir nur noch einen neuen Auftrag eröffnen, nachdem der Auftrag abgewickelt wurde.
Lesen Sie das Tutorial und die Dokumentation, ändern Sie die Logik für das Öffnen und Schließen durch eine Pose-Bedingung, fügen Sie den Code mit STRG+ALT+M ein.
Nein, ist es nicht. Es wurde sogar noch schlimmer :)
Verstehen Sie, RefreshRates() aktualisiert die Werte der vordefinierten Ask- und Bid-Variablen, Sie verwenden den einmal in der Price-Variablen gespeicherten Wert.
Es scheint gerade jetzt zu sein, nicht wahr?))Verstanden :-) Ich dachte, auf den Preis wird nur zugegriffen, wenn die Ausführung in dieser Funktion OrderSend erreicht
Jetzt scheint es richtig zu sein, oder?))Verstanden:-) Ich dachte, auf den Preis wird nur zugegriffen, wenn die Ausführung in dieser Funktion OrderSend erreicht
Ich glaube schon.
Funktion, ergibt aus irgendeinem Grund nur einen Wert + Compiler schwört :
iClose" - Vergleichsausdruck erwartet
Ich verstehe nicht, was los ist.
also verwenden Sie es im Programm.Funktion, gibt aus irgendeinem Grund nur einen Wert und der Compiler runzelt die Stirn:
iClose" - Vergleichsausdruck erwartet
Ich verstehe nicht, was los ist.
So verwende ich sie in meiner Anwendung.Oder es geht so
Ich glaube schon.
Alles scheint zu funktionieren, vielen Dank.
Hallo. Ich brauche etwas Hilfe. Die Frage ist folgende:
Nachdem ein Auftrag ausgelöst wurde, müssen alle anderen Aufträge abgeschlossen werden, egal wie. Und wieder sollten sich durch den Zustand neue eröffnen.
Hallo. Ich brauche etwas Hilfe. Die Frage ist folgende:
Nachdem ein Auftrag ausgelöst wurde, müssen alle anderen Aufträge abgeschlossen werden, egal wie. Und wieder ist die Bedingung, neue zu eröffnen.
Haben Sie das Lehrbuch zu diesem Zeitpunkt gelesen?
Bislang habe ich Folgendes verwendet
static bool order_opened = false;
if(order_opened){return(0);}
OrderSend(Symbol(),OP_BUYLIMIT,0.1,cena_buy,3,sl_buy,tp_buy,"",14774,0,Blue);
Alert (GetLastError()); // Fehlermeldung bei Orderaufgabe
order_opened = true; // wenn die Order funktioniert hat, nicht erneut öffnen
Jetzt müssen wir nur noch einen neuen Auftrag eröffnen, nachdem der Auftrag abgewickelt wurde.
Bislang habe ich Folgendes verwendet
static bool order_opened = false;
if(order_opened){return(0);}
OrderSend(Symbol(),OP_BUYLIMIT,0.1,cena_buy,3,sl_buy,tp_buy,"",14774,0,Blue);
Alert (GetLastError()); // Fehlermeldung bei Orderaufgabe
order_opened = true; // wenn die Order funktioniert hat, nicht erneut öffnen
Jetzt müssen wir nur noch einen neuen Auftrag eröffnen, nachdem der Auftrag abgewickelt wurde.
Lesen Sie das Tutorial und die Dokumentation, ändern Sie die Logik für das Öffnen und Schließen durch eine Pose-Bedingung, fügen Sie den Code mit STRG+ALT+M ein.