Ora ho il compito di impostare uno stop tramite OrderModify immediatamente dopo OpenSend e controllare se questo stop esiste.
Se non ha funzionato, non tracciarlo più, se no, qual è l'errore e prova a mettere... mettere... e mettere...)
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());}}
Puoi dirmi come controllare lo stato di OrderModify, in modo che dopo una modifica riuscita non si provi a modificare di nuovo e si ottengano errori inutili?
1. perché definire il tipo di variabile inutilmente - questo è un errore che dovrebbe apparire durante la compilazione
2. invece di continue - per passare a una nuova iterazione (cioè a un nuovo tentativo di modifica), usare break - uscita dal ciclo (e infinito, che non è buono)
1. perché definire il tipo di variabile inutilmente - questo è un errore che dovrebbe apparire al momento della compilazione
fisso)
2. Invece di continue - iterazione che salta a una nuova iterazione (cioè un nuovo tentativo di modifica), usate break - uscita dal ciclo
>> Grazie!
...ed è senza fine, il che non è buono...
infinito perché è necessario fermarlo...
E se faccio un paio di tentativi e viene respinto per qualche motivo e il prezzo va molto contro la posizione durante questo tempo... Cosa fare allora?
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
inserire VENDERE
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());}}
modificare SELL
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());}
}
}
Ecco la versione finale dell'apertura e la modifica della posa per la critica.
Il "+" e il "-" di questa opzione?
apertura vendita
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());}}
fermare la modifica
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());}}}
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Prendetevi il tempo per leggere il thread!
Sto scrivendo lì sull'opzione
anche se il BROKER dà un requote ...
codice di errore 138 e un conto reale.
Se intendete questa opzione e si riferisce a OrderModify
YuraZ писал(а) >>
допустим
получен сигнал -
на тике бъем на вход раз 5
не пробили! вышли
на втором тике после сигнала входим и долбим далше!
...allora non sono ancora cresciuto fino alle zecche))) Come contabilizzarli 1a spunta, 2a spunta?
Sleep(2000); // è un'attesa di 2 secondi dopo un errore
E aspettare una nuova zecca per quanto tempo?
Prova così.
Ora ho il compito di impostare uno stop tramite OrderModify immediatamente dopo OpenSend e controllare se questo stop esiste.
Se non ha funzionato, non tracciarlo più, se no, qual è l'errore e prova a mettere... mettere... e mettere...)
sostituire con questo:
qui:
1. perché definire il tipo di variabile inutilmente - questo è un errore che dovrebbe apparire durante la compilazione
2. invece di continue - per passare a una nuova iterazione (cioè a un nuovo tentativo di modifica), usare break - uscita dal ciclo (e infinito, che non è buono)
1. perché definire il tipo di variabile inutilmente - questo è un errore che dovrebbe apparire al momento della compilazione
fisso)
2. Invece di continue - iterazione che salta a una nuova iterazione (cioè un nuovo tentativo di modifica), usate break - uscita dal ciclo
>> Grazie!
...ed è senza fine, il che non è buono...
infinito perché è necessario fermarlo...
E se faccio un paio di tentativi e viene respinto per qualche motivo e il prezzo va molto contro la posizione durante questo tempo... Cosa fare allora?
Errori nel registro:
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
inserire VENDERE
modificare SELL
Se intendete questa opzione e si riferisce a OrderModify
...allora non sono ancora cresciuto a zecche))) Come contabilizzarli 1a spunta, 2a spunta?
Sleep(2000); // questo è un'attesa di 2 secondi dopo un errore
E quanto tempo aspettare per una nuova zecca?
ad ogni tick
si chiama
INIZIO()
{
}
---
notate che se state nella funzione START per molto tempo
potresti perdere una o più zecche
Per esempio, se entrate in una funzione START e rimanete lì per 10 minuti, è logico che le zecche arriveranno ma non le prenderete
anche se non si può avere una zecca per un bel po' di tempo durante la notte
---
così seduto in funzione START per un lungo periodo è male per la cattura delle zecche (se sono importanti per voi)
scrivere programmi economici con un minimo di cicli e ritardi
---
...tenete presente che se state nella funzione START per molto tempo
si può anche perdere una o più zecche
Per esempio, siete entrati nella funzione START e siete stati lì per 10 minuti, è logico che le zecche arriveranno ma non le prenderete
anche se non si può avere una zecca di notte per molto tempo
---
quindi stare seduti nella funzione START per molto tempo è male per la cattura delle zecche (se sono importanti per voi)
Scrivere programmi economici con un minimo di cicli e ritardi.
---
Se usi la funzione RefreshRates() prima di modificare o impostare un ordine, aggiorna solo lo stato al di fuori di Start(), cioè i tick?
Ho capito bene?
Ecco la versione finale dell'apertura e la modifica della posa per la critica.
Il "+" e il "-" di questa opzione?
apertura vendita
fermare la modifica