[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 191

 
solnce600:

Grazie mille per il vostro aiuto.

Ma apre le transazioni nel tester su ogni candela minuto. Info. in questo link http://clip2net.com/s/2T98Y

Voglio che apra un ordine sulla candela a 5 minuti, ma non su ogni candela.

E solo se l'attuale candela a cinque minuti è > o = 30 punti (dal prezzo di apertura al suo massimo)

Cioè, aprire un ordine a mercato al trentesimo pip dal prezzo di apertura del periodo zero=corrente di cinque minuti.

Se l'attuale candela a cinque minuti è inferiore a 30 pip dal prezzo aperto al suo massimo, allora non aprire un ordine a mercato.

Basta che lasci l'EA sul grafico a cinque minuti e sarà come hai scritto.

Oppure sostituite ovunque nel codice Open[0] per iOpen(Symbol (), PERIOD_M5, 0), allora funzionerà da qualsiasi grafico.

La seconda condizione nel tuo codice è che il prezzo di chiusura del periodo corrente di cinque minuti >= prezzo di apertura dell'ordine.

No, Close[0] è il prezzo di chiusura attuale della barra 0, cioè solo il prezzo attuale. Avresti potuto scrivere solo Bid, il risultato è lo stesso.


Cioè, non ci saranno molti ordini, ho calcolato in Excel, dal 1999 - poco più di 3000 ordini per euro in entrambe le direzioni.

Andiamo al prossimo cinque minuti e se esso, cioè l'attuale cinque minuti > o = 30 pips, apriamo al trentesimo pips, se meno, andiamo al prossimo cinque minuti ... e così via fino alla fine del grafico.

Ma il fatto è che, secondo una stima approssimativa, la maggior parte dei piani a cinque minuti che > o = 30 pip hanno molte più probabilità di volare oltre i 15 pip che di essere chiusi da uno stop a 30 pip.

Hai una condizione: se non ci sono ordini aperti

Ma nel mio sistema, due periodi di cinque minuti con i parametri descritti sopra possono essere formati in una fila e se l'ordine del precedente periodo di cinque minuti non è chiuso, allora nessun ordine sarà aperto nel secondo periodo di cinque minuti.

Ho bisogno che un ordine venga aperto ad ogni periodo di cinque minuti con i parametri descritti sopra, indipendentemente dal fatto che ci siano ordini nel commercio o meno.

Ok, allora cambiamo la condizione. Quindi viene fuori:

int start()

{

 double Price=iOpen (Symbol (),PERIOD_M5,0)+300*Point;        
 double SL=NormalizeDouble (Price-300*Point, Digits);         
 double TP=NormalizeDouble (Price+150*Point, Digits);    
 
 int last_order_bar = 0;
 int ot = OrdersTotal();

 if (ot>0) //если есть ордера в рынке
 {
   if (OrderSelect (ot-1,SELECT_BY_POS)) //выбрали последний ордер
      if (OrderType ()==OP_BUY || OrderType ()==OP_SELL) //проверили тип
         last_order_bar = iBarShift (Symbol (),PERIOD_M5,OrderOpenTime ()); //запомнили, на каком 5-минутном баре открыт последний ордер (если он есть)
 }
 
 if (OrdesTotal()==0 || last_order_bar>0) //если ордеров нет либо последний открыт не на текущем баре
    if (Bid>=Price)                       //если текущая цена доползла до цены открытия
       int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP );

}
 
beginner:
Mi interessa il consigliere, gli oggetti - disegno io stesso la candela?

Si può capire il principio:

//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Рисуем на чарте бары                                                       |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
void fDraw_Bars (string fs_Pref,          // Префикс имени объекта
                 int fi_NUMPeriod,        // Индекс (номер) периода, на котором будет виден объект
                 bool fb_IsNullBar,       // флаг рисования 0-го бара
                 double ar_Price[][][4])  // Массив с ценами
{
    int      li_widht = 6;
    string   ls_Name;
    color    lc_color = Aqua;
    datetime ldt_Time;
//----
    //---- Определяем время текущей свечи (её место в истории)
    if (fb_IsNullBar) {ldt_Time = Time[0];}
    else {ldt_Time = Time[1];}
    //---- Рисуем свечу
    ls_Name = StringConcatenate (fs_Pref, "_Candle_", TimeToStr (ldt_Time));
    if (ar_Price[0][1][3] < ar_Price[0][1][0]) {lc_color = Red;} else {if (ar_Price[0][1][3] == ar_Price[0][1][0]) {li_widht = 8;} else {lc_color = Blue;}}
    fDraw_OBJ (ls_Name, OBJ_TREND, ldt_Time, ar_Price[0][1][3], ar_Price[0][1][0], lc_color, li_widht, fi_NUMPeriod, "", 0, 10, "Arial", 0);
    //---- Рисуем тени свечи
    ls_Name = StringConcatenate (fs_Pref, "_Shadow_", TimeToStr (ldt_Time));
    if (ar_Price[0][1][3] <= ar_Price[0][1][0]) {lc_color = Gold;} else {lc_color = DeepSkyBlue;}
    fDraw_OBJ (ls_Name, OBJ_TREND, ldt_Time, ar_Price[0][1][1], ar_Price[0][1][2], lc_color, 1, fi_NUMPeriod, "", 0, 10, "Arial", 0);
//---- 
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
 
Diubakin:
Hai guardato il test EA per la funzione nel tester? Chiude esattamente la perdita massima con il profitto massimo, non importa quanti ordini ci siano - due o venti.
Per ora la questione della funzione è lasciata aperta perché domani incollerò altre funzioni nel tuo test EA per fare un esperimento puro. L'ho guardato in modalità visiva e quasi tutte le doppie chiusure sono l'ultima, la precedente chiude a SL e TP, cioè non ho niente da scegliere. Ho rimosso Stops and Takes per avere qualcosa da scegliere. Domani mostrerò il vostro Expert Advisor con tutte le funzioni aggiuntive e i commenti! Potrete vedere voi stessi come funziona la funzione. Voglio davvero dimostrare che mi sbagliavo! Se ho ragione, cercherò di fare del mio meglio! A domani!
 
alsu:

Basta lanciare l'EA su un grafico a cinque minuti e sarà come hai scritto.

Oppure sostituite Open[0] con iOpen(Symbol (), PERIOD_M5, 0) ovunque nel codice, allora funzionerà da qualsiasi grafico.

No, Close[0] è il prezzo di chiusura attuale della barra 0, cioè solo il prezzo attuale. Potresti semplicemente scrivere Bid, il risultato è lo stesso.


Ok, allora cambiamo la condizione. Viene fuori:




Grazie mille per il suo aiuto, è tutto a posto. Ma......

1. Su alcuni cinque minuti, più di 1 ordine si apre.

2. Alcuni ordini vengono chiusi su ordini stop il cui prezzo è diverso da quello prescritto nel codice.

Ho segnato i dati dell'ordine nel file allegato.

 
alsu:

Basta lanciare l'Expert Advisor sul grafico a cinque minuti e sarà come hai scritto.

Oppure sostituite Open[0] con iOpen(Symbol (), PERIOD_M5, 0) ovunque nel codice, allora funzionerà da qualsiasi grafico.

No, Close[0] è il prezzo di chiusura attuale della barra 0, cioè solo il prezzo attuale. Potreste semplicemente scrivere Bid, il risultato è lo stesso.


Ok, allora cambiamo la condizione. Viene fuori:




Grazie mille per il suo aiuto, è tutto a posto. Ma......

1. Su alcuni cinque minuti, più di 1 ordine si apre.

2. alcuni ordini vengono chiusi da ordini stop il cui prezzo è diverso da quello prescritto nel codice.

Leinformazioni sugliordini di cui sopra possono essere trovate in questo link

http://clip2net.com/s/2Tfym

 

Mi dispiace. per favore aiutatemi. sto copiando un programma con alcune modifiche. il compilatore mi dà un errore: '(' - function definition unexpected F:\forex\MetaTrader NordFX\experts\ia.mq4 (305, 16) .

cosa significa?

- Ho provato a rimuovere questo pezzo del programma - dice anche quanto segue.

- provato a lasciare questa parte invariata - il risultato è lo stesso (stesso errore)

sul programma nativo compilato con successo.

 
TarasBY:

Il principio può essere compreso:



Grazie!
 
lopuh:

Mi dispiace. per favore aiutatemi. sto copiando un programma con alcune modifiche. il compilatore mi dà l'errore: '(' - function definition unexpected F:\forex\MetaTrader NordFX\experts\ia.mq4 (305, 16) .

cosa significa?

- Ho provato a rimuovere questo pezzo del programma - dice anche quanto segue.

- provato a lasciare questa parte invariata - il risultato è lo stesso (stesso errore)

sul programma nativo compilato con successo.

Qui

L'errore suggerisce che state definendo una funzione dentro un'altra funzione. Tutte le funzioni devono essere definite globalmente

 

Ho bisogno di aiuto.

Cercando qualsiasi funzione o script che sappia fare uno screenshot ad un certo punto, come quando si apre/chiude una posa.

Quando non devo, ne ho incontrato uno ogni tanto, ma ora non riesco a trovarlo.

AIUTO!
 
DhP:

Ho bisogno di aiuto.

Cercando qualsiasi funzione o script che sappia fare uno screenshot ad un certo punto, come quando si apre/chiude una posa.

Quando non ne ho bisogno, ne ho incontrato uno ogni tanto, ma ora non riesco a trovarlo.

AIUTO!
C'è un Expert Advisor di Igor Kim che fa uno screenshot ad un dato intervallo
Motivazione: