[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 226
Il problema della logica - non me ne viene in mente nessuno.
Davvero, hai un problema con la logica. Cominci a mettere ordini pendenti quanti ne vuoi, poi vuoi cancellarli tutti dopo che uno di essi si apre, e poi ti sorprendi che tutti quelli nuovi vengono cancellati. Poi continua a pensare a cosa dovrebbe succedere dopo che il prossimo ordine pendente è stato attivato. L'algoritmo dipenderà da questo.
Roger: In effetti, lei ha un problema con la logica. Prima permetti gli ordini pendenti quanto vuoi, poi vuoi cancellarli tutti dopo l'apertura di uno di essi, e poi sei sorpreso che tutti i nuovi ordini pendenti siano cancellati. Poi continua a pensare a cosa dovrebbe succedere dopo che il prossimo ordine pendente è stato attivato. L'algoritmo dipenderà da questo.
Grazie per aver corretto il mio pensiero, mi ci stavo fissando.
Dopo il primo ordine pendente (diciamo baillimit) altri ordini pendenti possono essere piazzati nella stessa direzione, ma come facciamo a cancellare tutte le posizioni e gli ordini di acquisto quando il segnale appare nella direzione opposta (diciamo selimit)?
Ciao, potresti per favore dirmi come scrivere una variabile globalebool, per esempio bool=uroven_1=false; come scrivere questo in una variabile globale in modo che abbia un nuovo valore dopo un riavvio del terminale, grazie.
laveosa: Ciao, potresti per favore dirmi come scrivere una variabile globale bool, per esempio bool=uroven_1=false; come scrivere questo in una variabile globale in modo che abbia un nuovo valore dopo un riavvio del terminale, grazie.
La logica è corretta - ci dovrebbero essere tanti numeri di posizione negli ordini quanti sono gli ordini, una volta che uno viene chiuso, tutti gli altri vengono ricalcolati. Prova questa costruzione
Risposta.
Salve. Sfortunatamente, la costruzione sopra descritta non ci dà il risultato richiesto. Vorrei darvi il codice del programma e le voci del diario del tester. Con rispetto. Shurkin 18 marzo 2013.
Код программы.
//+------------------------------------------------------------------+//| Poligon1.mq4 |//| 21 февраля 2013 года. |//|Тестирование оператора цикла for. |//+------------------------------------------------------------------+#property copyright "21 февраля 2013 года."#property link ""//+------------------------------------------------------------------+//|Объявленные переменные |//+------------------------------------------------------------------+int Mn=357;//Magic numberint i;//Показатель счётчика итерацийdouble PriTP;//TP серииint Tick;//Счётчик тиков//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init()
{
//----Установка серии ордеровOrderSend(Symbol(),OP_BUY,0.5,Ask,0,NormalizeDouble(Bid-35*Point,Digits),
NormalizeDouble(Ask+35*Point,Digits),NULL,Mn,0,CLR_NONE);//OP_BUYOrderSend(Symbol(),OP_BUY,1,Ask,0,NormalizeDouble(Bid-25*Point,Digits),
NormalizeDouble(Ask+25*Point,Digits),NULL,Mn,0,CLR_NONE);//OP_BUYOrderSend(Symbol(),OP_BUY,1.5,Ask,0,NormalizeDouble(Bid-15*Point,Digits),
NormalizeDouble(Ask+15*Point,Digits),NULL,Mn,0,CLR_NONE);//OP_BUYOrderSend(Symbol(),OP_BUY,2.5,Ask,0,NormalizeDouble(Bid-15*Point,Digits),
NormalizeDouble(Ask+15*Point,Digits),NULL,Mn,0,CLR_NONE);//OP_BUYOrderSend(Symbol(),OP_BUY,3.5,Ask,0,NormalizeDouble(Bid-15*Point,Digits),
NormalizeDouble(Ask+15*Point,Digits),NULL,Mn,0,CLR_NONE);//OP_BUYOrderSend(Symbol(),OP_BUYLIMIT,1,NormalizeDouble(Ask-15*Point,Digits),0,
NormalizeDouble(Bid-40*Point,Digits),NormalizeDouble(Ask+25*Point,Digits),
NULL,Mn,0,CLR_NONE);//OP_BUYLIMITOrderSend(Symbol(),OP_SELLSTOP,3,NormalizeDouble(Ask-30*Point,Digits),0,
NormalizeDouble(Bid+15*Point,Digits),NormalizeDouble(Ask-75*Point,Digits),
NULL,Mn,0,CLR_NONE);//OP_SELLSTOP//----
PriTP=Bid;//PriTPPrint("Кс0:"," OrdersTotal=",OrdersTotal());//Сообщение//----return(0);
}
//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
//----
Tick++;//Tick// Print("Кс0:"," Tick=",Tick);//Сообщение//----// for(i=0;i<OrdersTotal();i++)//Инициализация цикла// for(i=OrdersTotal()-1; i>=0; i--)//for(i=0, int k=0; i<OrdersTotal();i++,k++)//
{
Print("Кс1:"," Tick=",Tick," i=",i," k=",k);//Сообщениеif(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)//Выбор ордера i
{
if(OrderSymbol()==Symbol())//Символ
{
if(OrderMagicNumber()==Mn)//Идентификационное число
{
if(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)//Тип операции текущего выбранного ордера
{
OrderClose(OrderTicket(),OrderLots(),Bid,0,CLR_NONE);//Закрытие позиции
k--;//Зачем сначала прибавлять и тут же убавлять ???
}//Закрыто if(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)
}//Закрыто if(OrderMagicNumber()==Mn)
}//Закрыто if(OrderSymbol()==Symbol()
}//Закрыто if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
}//Закрыто for(i=0;i<OrdersTotal();i++)//----return(0);
}
//+------------------------------------------------------------------+
Записи в журнале тестера.
2013.03.18 09:42:48 2013.02.11 12:16 Poligon1 EURUSD,M15: Кс1: Tick=5 i=1 k=1
2013.03.18 09:42:48 2013.02.11 12:16 Poligon1 EURUSD,M15: Кс1: Tick=5 i=0 k=0
2013.03.18 09:42:24 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=4 i=1 k=1
2013.03.18 09:42:24 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=4 i=0 k=0
2013.03.18 09:42:00 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=3 i=1 k=0
2013.03.18 09:42:00 2013.02.11 12:15 Poligon1 EURUSD,M15: close #4 buy 2.50 EURUSD at 1.3397 sl: 1.3380 tp: 1.3412 at price 1.3393
2013.03.18 09:42:00 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=3 i=0 k=0
2013.03.18 09:41:36 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=2 i=2 k=1
2013.03.18 09:41:36 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=2 i=1 k=0
2013.03.18 09:41:36 2013.02.11 12:15 Poligon1 EURUSD,M15: close #2 buy 1.00 EURUSD at 1.3397 sl: 1.3370 tp: 1.3422 at price 1.3394
2013.03.18 09:41:36 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=2 i=0 k=0
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=1 i=3 k=0
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: close #5 buy 3.50 EURUSD at 1.3397 sl: 1.3380 tp: 1.3412 at price 1.3395
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=1 i=2 k=0
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: close #3 buy 1.50 EURUSD at 1.3397 sl: 1.3380 tp: 1.3412 at price 1.3395
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=1 i=1 k=0
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: close #1 buy 0.50 EURUSD at 1.3397 sl: 1.3360 tp: 1.3432 at price 1.3395
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=1 i=0 k=0
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс0: OrdersTotal=7
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: open #7 sell stop 3.00 EURUSD at 1.3367 sl: 1.3410 tp: 1.3322 ok
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: open #6 buy limit 1.00 EURUSD at 1.3382 sl: 1.3355 tp: 1.3422 ok
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: open #5 buy 3.50 EURUSD at 1.3397 sl: 1.3380 tp: 1.3412 ok
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: open #4 buy 2.50 EURUSD at 1.3397 sl: 1.3380 tp: 1.3412 ok
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: open #3 buy 1.50 EURUSD at 1.3397 sl: 1.3380 tp: 1.3412 ok
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: open #2 buy 1.00 EURUSD at 1.3397 sl: 1.3370 tp: 1.3422 ok
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: open #1 buy 0.50 EURUSD at 1.3397 sl: 1.3360 tp: 1.3432 ok
2013.03.18 09:41:12 Poligon1 test started
2013.03.18 09:40:59 Poligon1: loaded successfully
Quando si testa l'Expert Advisor WOC0.1.2 nel tester MT4 (applicazione per MT4 da Forex Club), le etichette degli ordini sul grafico sono sopra i prezzi, cioè le operazioni sono state eseguite ai prezzi che non si sono verificate. È un difetto del tester? Può essere corretto in qualche modo?
Per favore.
Il problema della logica - non me ne viene in mente nessuno.
In effetti, lei ha un problema con la logica. Prima permetti gli ordini pendenti quanto vuoi, poi vuoi cancellarli tutti dopo l'apertura di uno di essi, e poi sei sorpreso che tutti i nuovi ordini pendenti siano cancellati. Poi continua a pensare a cosa dovrebbe succedere dopo che il prossimo ordine pendente è stato attivato. L'algoritmo dipenderà da questo.
Grazie per aver corretto il mio pensiero, mi ci stavo fissando.
Dopo il primo ordine pendente (diciamo baillimit) altri ordini pendenti possono essere piazzati nella stessa direzione, ma come facciamo a cancellare tutte le posizioni e gli ordini di acquisto quando il segnale appare nella direzione opposta (diciamo selimit)?
Buona sera! Scusatemi, vorrei tornare a un problema irrisolto.
'Buy' - tipi incompatibili D:\TeleTRADE\experts/experts/clean.mq4 (102, 53)
'Sell' - tipi incompatibili D:\TeleTRADE\experts\clearlist.mq4 (102, 79)
Ciao, potresti per favore dirmi come scrivere una variabile globale bool, per esempio bool=uroven_1=false; come scrivere questo in una variabile globale in modo che abbia un nuovo valore dopo un riavvio del terminale, grazie.
https://book.mql4.com/ru/variables/globals
La logica è corretta - ci dovrebbero essere tanti numeri di posizione negli ordini quanti sono gli ordini, una volta che uno viene chiuso, tutti gli altri vengono ricalcolati. Prova questa costruzione
Risposta.
Salve.
Sfortunatamente, la costruzione sopra descritta non ci dà il risultato richiesto. Vorrei darvi il codice del programma e le voci del diario del tester.
Con rispetto. Shurkin
18 marzo 2013.
Quando si testa l'Expert Advisor WOC0.1.2 nel tester MT4 (applicazione per MT4 da Forex Club), le etichette degli ordini sul grafico sono sopra i prezzi, cioè le operazioni sono state eseguite ai prezzi che non si sono verificate. È un difetto del tester? Può essere corretto in qualche modo?
http://s017.radikal.ru/i405/1303/61/959038aaf1a9.jpg
E un'altra cosa: nella modalità di visualizzazione del tester alcuni affari vengono eseguiti, ma senza di essa non lo sono.
L'ho capito da solo. È a causa dell'aumento della diffusione (81) sul tester durante il fine settimana.