Ich habe nun die Aufgabe, über OrderModify unmittelbar nach OpenSend einen Stop zu setzen und zu prüfen, ob dieser Stop existiert.
Wenn es nicht funktioniert hat, nicht mehr verfolgen, wenn nicht, was ist der Fehler und versuchen, zu setzen ... setzen ... und setzen ...)
RefreshRates();double SLS =Ask+ Stop*Point;//стоп на продажу
Modify =OrderModify(OrderTicket(),OrderOpenPrice(), SLS,OrderTakeProfit(),0,Red);if( Modify ==false){Print("Ошибка при попытке установить стоп для SEL, код ошибки ="+GetLastError());for(int j=0;; j++)//пытаемся пока ДЦ не умрет){
SLS = SLS+ j*Point;//увеличиваем стоп на 1 пп RefreshRates();
Modify =OrderModify(OrderTicket(),OrderOpenPrice(), SLS,OrderTakeProfit(),0,Red);if( Modify==true)break;elsePrint("Ошибка при попытке установить стоп для SEL, код ошибки ="+GetLastError());}}
Können Sie mir sagen, wie ich den Status von OrderModify überprüfen kann, damit ich nach einer erfolgreichen Änderung nicht erneut versuche zu ändern und unnötige Fehler erhalte?
1. Warum wird der Variablentyp unnötigerweise definiert - dies ist ein Fehler, der bei der Kompilierung angezeigt werden sollte.
2. anstelle von continue - zum Übergang zu einer neuen Iteration (d.h. zu einem neuen Änderungsversuch), verwenden Sie break - Verlassen der Schleife (und unendlich, was nicht gut ist)
1. warum wird der Typ der Variablen unnötigerweise definiert - dies ist ein Fehler, der bei der Kompilierung angezeigt werden sollte
fest)
2. anstelle von continue - Iteration, die zu einer neuen Iteration (d.h. einem neuen Änderungsversuch) springt, verwenden Sie break - Verlassen der Schleife
>> Vielen Dank!
...und es ist endlos, was nicht gut ist...
unendlich, weil es notwendig ist, sie zu stoppen...
Und wenn ich es ein paar Mal versuche und es aus irgendeinem Grund abgelehnt wird und der Kurs während dieser Zeit weit gegen die Position geht... Was ist dann zu tun?
open #1 sell 0.01 EURUSD ok modify #1 sell 0.01 EURUSD ok Error trying to set a stop for SEL, error code =0 stop loss #1 open #2 sell 0.01 EURUSD ok modify #2 sell 0.01 EURUSD ok Error trying to set a stop for SEL, error code =0 stop loss #2 open #3 sell 0.01 EURUSD ok modify #3 sell 0.01 EURUSD ok Error trying to set a stop for SEL, error code =0
SELL eingeben
RefreshRates();if((OrdersTotal()==0)&&(Bid== Enter))//бъем до упора эту цену{if(IsTradeContextBusy()==false){OrderSend(Symbol(),OP_SELL, Lot, Enter, Slippage,0, ldTake, lsComm, MAGIC,0, clOpenSell);if(OrdersTotal()>0){
ModifySL();//ставим стоп
SLBU =OrderOpenPrice()- BU;//цена БУ}elsePrint("Ошибка при попытке установить ордер на SELL, ",OrderOpenPrice()," код ошибки ="+GetLastError());}}
SELL ändern
void ModifySL(){if(OrderSelect(0, SELECT_BY_POS)==true)// Если есть открытый ордер{if(OrderType()==OP_BUY){RefreshRates();OrderModify(OrderTicket(),OrderOpenPrice(),Bid- StopL*Point,OrderTakeProfit(),0,Red);if(OrderStopLoss()==0)Print("Ошибка при попытке установить стоп для BUY, ",OrderStopLoss()," код ошибки ="+GetLastError());}elseRefreshRates();OrderModify(OrderTicket(),OrderOpenPrice(),Ask+ StopL*Point,OrderTakeProfit(),0,Red);if(OrderStopLoss()==0)Print("Ошибка при попытке установить стоп для SEL, ",OrderStopLoss()," код ошибки ="+GetLastError());}
}
}
...denken Sie daran, dass Sie, wenn Sie sich lange in der START-Funktion befinden
können Sie durchaus eine oder mehrere Zecken übersehen
Wenn Sie z. B. die START-Funktion eingegeben haben und 10 Minuten lang dort waren, ist es logisch, dass Zecken kommen, aber Sie werden sie nicht einfangen.
auch wenn Sie nachts lange Zeit keine Zecke bekommen
---
lange Zeit in der START-Funktion zu sitzen, ist also schlecht für das Einfangen von Zecken (wenn sie für Sie wichtig sind)
Schreiben Sie wirtschaftliche Programme mit einem Minimum an Zyklen und Verzögerungen.
---
Wenn Sie die Funktion RefreshRates() verwenden, bevor Sie einen Auftrag ändern oder festlegen, wird lediglich der Status außerhalb von Start() aktualisiert, d. h. die Ticks?
Hier ist die endgültige Version der Eröffnung und der Änderung der Pose zur Kritik.
Das "+" und "-" dieser Option?
Eröffnungsverkauf
RefreshRates();if((OrdersTotal()==0)&&(Bid== Enter))//бъем до упора эту цену{if(IsTradeContextBusy()==false){OrderSend(Symbol(),OP_SELL, Lot, Enter, Slippage,0, ldTake, lsComm, MAGIC,0, clOpenSell);if(OrdersTotal()>0){
ModifySL();//ставим стоп
SLBU =OrderOpenPrice()- BU;//цена БУ}elsePrint("Ошибка при попытке установить ордер на SELL, ",OrderOpenPrice()," код ошибки ="+GetLastError());}}
Stoppmodifikation
void ModifySL(){if(OrderSelect(0, SELECT_BY_POS)==true)// Если есть открытый ордер{if(OrderType()==OP_BUY){RefreshRates();bool Modify =OrderModify(OrderTicket(),OrderOpenPrice(),Bid- StopL*Point,OrderTakeProfit(),0,Red);if( Modify ==false)Print("Ошибка при попытке установить стоп для BUY, ",OrderStopLoss()," код ошибки ="+GetLastError());}else{RefreshRates();
Modify =OrderModify(OrderTicket(),OrderOpenPrice(),Ask+ StopL*Point,OrderTakeProfit(),0,Red);if( Modify ==false)Print("Ошибка при попытке установить стоп для SEL, ",OrderStopLoss()," код ошибки ="+GetLastError());}}}
Nehmen Sie sich die Zeit, das Thema zu lesen!
Ich schreibe dort über die Option
auch wenn der BROKER einen Preisnachlass gewährt ...
Fehlercode 138 und ein echtes Konto.
Wenn Sie diese Option meinen und sie sich auf OrderModify bezieht
YuraZ писал(а) >>
допустим
получен сигнал -
на тике бъем на вход раз 5
не пробили! вышли
на втором тике после сигнала входим и долбим далше!
...dann bin ich den Zecken noch nicht gewachsen))) Wie werden sie berücksichtigt: 1. Tick, 2. Tick?
Sleep(2000); // nach einem Fehler wird 2 Sekunden gewartet
Und wie lange auf eine neue Zecke warten?
Versuchen Sie es so.
Ich habe nun die Aufgabe, über OrderModify unmittelbar nach OpenSend einen Stop zu setzen und zu prüfen, ob dieser Stop existiert.
Wenn es nicht funktioniert hat, nicht mehr verfolgen, wenn nicht, was ist der Fehler und versuchen, zu setzen ... setzen ... und setzen ...)
durch diese ersetzen:
hier:
1. Warum wird der Variablentyp unnötigerweise definiert - dies ist ein Fehler, der bei der Kompilierung angezeigt werden sollte.
2. anstelle von continue - zum Übergang zu einer neuen Iteration (d.h. zu einem neuen Änderungsversuch), verwenden Sie break - Verlassen der Schleife (und unendlich, was nicht gut ist)
1. warum wird der Typ der Variablen unnötigerweise definiert - dies ist ein Fehler, der bei der Kompilierung angezeigt werden sollte
fest)
2. anstelle von continue - Iteration, die zu einer neuen Iteration (d.h. einem neuen Änderungsversuch) springt, verwenden Sie break - Verlassen der Schleife
>> Vielen Dank!
...und es ist endlos, was nicht gut ist...
unendlich, weil es notwendig ist, sie zu stoppen...
Und wenn ich es ein paar Mal versuche und es aus irgendeinem Grund abgelehnt wird und der Kurs während dieser Zeit weit gegen die Position geht... Was ist dann zu tun?
Fehler im Protokoll:
open #1 sell 0.01 EURUSD ok
modify #1 sell 0.01 EURUSD ok
Error trying to set a stop for SEL, error code =0
stop loss #1
open #2 sell 0.01 EURUSD ok
modify #2 sell 0.01 EURUSD ok
Error trying to set a stop for SEL, error code =0
stop loss #2
open #3 sell 0.01 EURUSD ok
modify #3 sell 0.01 EURUSD ok
Error trying to set a stop for SEL, error code =0
SELL eingeben
SELL ändern
Wenn Sie diese Option meinen und sie sich auf OrderModify bezieht
...dann bin ich den Zecken noch nicht gewachsen))) Wie werden sie berücksichtigt: 1. Tick, 2. Tick?
Sleep(2000); // Dies ist eine 2 Sekunden lange Wartezeit nach einem Fehler
Und wie lange muss man auf eine neue Zecke warten?
auf Schritt und Tritt
heißt
START()
{
}
---
Beachten Sie, dass Sie, wenn Sie sich lange in der START-Funktion befinden
Sie könnten eine oder mehrere Zecken übersehen
Wenn Sie z. B. in eine START-Funktion gehen und dort 10 Minuten lang sitzen, ist es logisch, dass Zecken kommen, aber Sie werden sie nicht erwischen.
auch wenn Sie nachts lange Zeit keine Zecke bekommen
---
lange Zeit in der START-Funktion zu sitzen, ist also schlecht für das Einfangen von Zecken (wenn sie für Sie wichtig sind)
wirtschaftliche Programme mit einem Minimum an Zyklen und Verzögerungen schreiben
---
...denken Sie daran, dass Sie, wenn Sie sich lange in der START-Funktion befinden
können Sie durchaus eine oder mehrere Zecken übersehen
Wenn Sie z. B. die START-Funktion eingegeben haben und 10 Minuten lang dort waren, ist es logisch, dass Zecken kommen, aber Sie werden sie nicht einfangen.
auch wenn Sie nachts lange Zeit keine Zecke bekommen
---
lange Zeit in der START-Funktion zu sitzen, ist also schlecht für das Einfangen von Zecken (wenn sie für Sie wichtig sind)
Schreiben Sie wirtschaftliche Programme mit einem Minimum an Zyklen und Verzögerungen.
---
Wenn Sie die Funktion RefreshRates() verwenden, bevor Sie einen Auftrag ändern oder festlegen, wird lediglich der Status außerhalb von Start() aktualisiert, d. h. die Ticks?
Verstehe ich das richtig?
Hier ist die endgültige Version der Eröffnung und der Änderung der Pose zur Kritik.
Das "+" und "-" dieser Option?
Eröffnungsverkauf
Stoppmodifikation