[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 424

 
Legeo777:

Per favore, aiutatemi a capire cosa c'è che non va:

//+------------------------------------------------------------------+

//| AAAA.mq4 |

//| |

//| |

//+------------------------------------------------------------------+

#proprietà copyright ""

#proprietà link ""


extern string TimeStart = "00:00"; //ora di inizio del periodo di controllo

extern string TimeEnd = "00:00"; //timer della fine del periodo di controllo.


extern double LOT = 0.01; // lotto

extern int Magic = 777; // magia



double marga,Lot,SL,TP; // inserito margine, lotto, stop loss e take profit variabili

int Total,Orders,tipOrders,TradeDey; // tipo di variabili, tipo di ordine, giorno di trading.


//+---------------------------------------------------------------------------------------------------------------------------------------+

//| funzione dell'Expert Advisor |

//+---------------------------------------------------------------------------------------------------------------------------------------+

int start() // Funzione di inizializzazione start

{

datetime Time_Start = StrToTime(StringConcatenate(Day(),".",Month(),".",Year()," ",TimeStart, ":00")); // parametri di inizio //

datetime Time_End = StrToTime(StringConcatenate(Day(),".",Month(),".",Year(),",TimeEnd, ":00")); // parametri finali//



Total=0; // Se non ci sono ordini

for(int i=1; i<=OrdersTotal(); i++) // ciclo degli ordini

{

if (OrderSelect(i-1,SELECT_BY_POS)==false) // Se non ci sono ordini a mercato

{

se //se: - rimuovere
{

int BarStart = iBarShift(NULL,PERIOD_M1,Time_Start,false); // cerca la barra all'inizio del periodo di controllo su m1

int BarEnd = iBarShift(NULL,PERIOD_M1,Time_End,false); //ricerca la fine della barra del periodo di controllo a m1

double Max_Price=iHigh(NULL,0,iHighest(NULL,PERIOD_M1,MODE_HIGH,BarStart-BarEnd,BarEnd)); //il valore più alto del prezzo nel periodo

double Min_Price=iLow (NULL,0,iLowest (NULL,PERIOD_M1,MODE_LOW,BarStart-BarEnd,BarEnd)); //il valore più basso del prezzo nel periodo

}

if (TimeCurrent()>Time_End && ObjectFind("bar0"+Time_End)==-1) // Impostazioni di visualizzazione grafica

{

ObjectCreate("bar0"+Time_End, OBJ_RECTANGLE, 0, 0,0,0, 0,0);

ObjectSet("bar0"+Time_End, OBJPROP_STYLE, STYLE_SOLID);

ObjectSet ("bar0"+Time_End, OBJPROP_COLOR, Blue);

ObjectSet ("bar0"+Time_End, OBJPROP_BACK, true);

ObjectSet ("bar0"+Time_End, OBJPROP_TIME1,Time_Start);

ObjectSet ("bar0"+Time_End, OBJPROP_PRICE1,Max_Price);

ObjectSet ("bar0"+Time_End, OBJPROP_TIME2,Time_End);

ObjectSet ("bar0"+Time_End, OBJPROP_PRICE2,Min_Price);

}

if (Bid<Max_Price) OrderSend(Symbol(),OP_BUYSTOP,LOT,Ask,3,Min_Price, //condizioni per piazzare un ordine pendente BUY - gli ordini pendenti non possono essere piazzati da Ask o Bid

NormalizeDouble(Ask + Max_Price - Min_Price,Digits), "UPDD",Magic,Blue);

se (Bid>Max_Price)

Comment("L'ordine in sospeso non può essere piazzato su Bid");

if (Bid>Min_Price) OrderSend(Symbol(),OP_SELLSTOP,LOT,Bid,3,Min_Price, //condizioni per piazzare un ordine pendente SELL - stesso

NormalizeDouble(Ask + Max_Price-Min_Price,Digits), "UPDD",Magic,Blue);

if (Bid<Max_Price) - ci deve essere un errore qui

Comment("L'ordine in sospeso non può essere piazzato su SELL");

}

} - aggiungere

ritorno;

}

Non riesco a compilarlo. In realtà, dovrebbe piazzare due ordini pendenti su e giù dalla gamma.

Dopo le correzioni, dovrebbe compilare, ma probabilmente non funzionerà - tempi impostati in modo errato, prezzi non normalizzati, nessun controllo della vicinanza degli stop ai prezzi aperti.
 
Se sei esperto, potresti dirci come impostare il tempo di esistenza dell'ordine pendente alle 23.59, cioè se l'ordine è piazzato da un EA, esisterebbe fino alle 23.59 del giorno corrente
 
stater:
Se sei esperto, potresti dirci come impostare il tempo di esistenza dell'ordine pendente alle 23.59, cioè se l'ordine è piazzato da un EA, esisterebbe fino alle 23.59 del giorno corrente
datime exp=iTime(Symbol(),PERIOD_D1,0)+23*60*60+59*60;
 
Sepulca:


Grazie mille! Puoi dirmi quanti EAs possono lavorare in un terminale, ho aperto 5 grafici EURUSD, ho lanciato 5 diversi EAs su di essi, ma il giornale mostra solo il primo che lavora...anche se tutte le mie facce stanno sorridendo

 

Qual è il modo più intelligente per fare una MM, alla condizione di 0,1 lotto per ogni 1000 di saldo.

Cosa è più ragionevole usare, AccountBalance o AccountEquity?

 

Buon pomeriggio,

C'è un comando che potrebbe essere aggiunto allo script (il cui codice è "OrderSend(Symbol(),OP_BUYSTOP...") per far eseguire lo script su tutti i grafici aperti?

 
sss2019:

Qual è il modo più intelligente per fare una MM, alla condizione di 0,1 lotto per ogni 1000 di saldo.

Cosa è più ragionevole usare, AccountBalance o AccountEquity?


Non fa differenza. Se aprite un solo ordine, sono uguali al momento dell'apertura, ma se ne avete molti, una formula non è sufficiente.
 
stater:

Grazie mille! Puoi dirmi quanti EAs possono lavorare in un terminale, ho aperto 5 grafici EURUSD, ho lanciato 5 diversi EAs su di essi, ma il giornale mostra solo il primo che lavora...anche se tutte le mie facce stanno sorridendo



Su diverse coppie di valute funzionerà, anche se si tratta dello stesso Expert Advisor. In un grafico, solo uno funzionerà. Ma su diversi grafici della stessa coppia di valute non so nemmeno.....
 
Roger:

Non fa differenza, se aprite un solo ordine, sono uguali al momento dell'apertura, e se ne avete molti, allora una formula non è sufficiente.


Stavo solo pensando che se ho già diversi ordini aperti e sono in drawdown, allora il lotto dovrebbe essere calcolato con il capitale, altrimenti se lo si calcola con il saldo, allora il lotto potrebbe essere troppo grande e non abbastanza denaro per aprire.

Per favore, mostratemi un esempio di calcolo come questo per un deposito di 1000 lotti di 0,1 lotti.

 
Roger Grazie mille!!!!!