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

 
Dimka-novitsek:

if(Stoch_1>Stoch_2) { flag1=1 ; Stampa (flag1,flag2,flag3,flag4); }


if(Stoch_1<Stoch_2 && flag1==1) flag2=1 ; Print (flag1,flag2,flag3,flag4); }

if ((Stoch_1>Stoch_2) && flag1==1 && flag2==1) {flag3=1; Print (flag1,flag2,flag3,flag4);PlaySound("alert.wav");}


if(Stoch_1<Stoch_2 && flag1==1 && flag2==1 && flag3==1) flag4=1;
{Stampa (flag1,flag2,flag3,flag4);}
if(Stoch_1>Stoch_2 && flag1==1 && flag2==1 && flag3==1 && flag4==1)
{OrderSend (Symbol( ), OP_SELL, 0.01 ,Bid, 0, 0, 0, 0, NULL, 450, 0, CLR_NONE);
Stampa ("OUT");}



flag1=0;
flag2=0;
flag3=0;
flag4=0;

Capendo che imparerai e per il gusto di imparare scrivi qualcosa... Almeno ho sistemato le tue parentesi in modo che abbiano un ruolo, secondo me.


e anche se il tuo codice ha dato 24 errori nel compilatore!!! comunque grazie anche per l'aiuto sciatto.... per l'idea... (ora funziona - anche se ho provato a farlo in questo modo in linea di principio, ma la punteggiatura era un problema)
 

Ancora una volta mi sono chiesto quale sia l'indice di posizione. Se è un numero di posizione nella storia, allora cosa fa questa funzione?

GetIndexLastPos Indice dell'ultima posizione aperta o -1?

l'indice dell'ultima posizione aperta è sempre 1 perché è l'ultima !!!

Ovviamente sto fraintendendo l'INDEX ....

indizio chi lo sa?

 
lottamer:

Come pensi che dovrebbe essere confrontato?

Cominciamo:

1.Se(Stoch_1>Stoch_2) flag1=1 ; , allora la condizione che la segue (Stoch_1<Stoch_2 && flag1==1) non può in principio essere vera, perché se Stoch_1<Stoch_2 flag1==0 e se flag1==1allora Stoch_1>Stoch_2. è lo stesso per tutte le condizioni successive in questa funzione, quindi solo il flag1 può cambiare il valore. Cioè, il vostro programma eseguirà le prime due righe, salteràla terza, eseguirà laquarta, salteràla quinta, eseguirà la sesta, eseguirà la settima e salterà tutte le altre.


	          
 
xant:

TarasBY,

Var1 e altri nominati come ho fatto, inserito il blocco fGet_MineGV() dentro init e il blocco fSave_MineGV() dentro staft.

Durante la compilazione, l'EA ha dato un sacco di errori.

Ho provato uno per uno. Prima l'ho inserito dentro init, poi l'ho compilato. Ci sono 0 errori, un'osservazione: non è referenziato e sarà rimosso dal file exp. Beh, per me ha senso, non può trovare il file, perché non esiste ancora. Deve essere scritto all'interno del pentagramma.

Così, quando provo a scrivere il secondo blocco all'interno dello staft, produce un sacco di errori.

Algoritmo strutturale:

int init()
{
    fGet_MineGV();
}
int start()
{
    fSave_MineGV();
}
double Var1, Var2, Var3, Var4;  // 4-ре переменных для сохранения (у Вас они свои !!!)
void fSave_MineGV (string fs_PrefName = "")     // префикс имени переменной
{
    static datetime ldt_NewBar;
    datetime ldaTBeginBar = iTime (Symbol(), 1, 0);
//----
    //---- Сохраняемся в начале каждой минуты
    if (ldt_NewBar == ldaTBeginBar) return;
    ldt_NewBar = ldaTBeginBar;
    //---- Сохраняем поочереди значения каждой переменной
    string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
    GlobalVariableSet (ls_Name, Var1);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
    GlobalVariableSet (ls_Name, Var2);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
    GlobalVariableSet (ls_Name, Var3);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
    GlobalVariableSet (ls_Name, Var4);
//----
}
// в init()
void fGet_MineGV (string fs_PrefName = "")     // префикс имени переменной
{
    string ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_1");
//----
    //---- Восстанавливаем значения переменных
    if (GlobalVariableCheck (ls_Name)) Var1 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_2");
    if (GlobalVariableCheck (ls_Name)) Var2 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_3");
    if (GlobalVariableCheck (ls_Name)) Var3 = GlobalVariableGet (ls_Name);
    ls_Name = StringConcatenate (fs_PrefName, Symbol(), "_N_4");
    if (GlobalVariableCheck (ls_Name)) Var4 = GlobalVariableGet (ls_Name);
//----
}

Naturalmente l'hai fatto tu? E non compila?

 
lottamer:

Ancora una volta mi sono chiesto quale sia l'indice di posizione. Se è un numero di posizione nella storia, allora cosa fa questa funzione?

GetIndexLastPos Indice dell'ultima posizione aperta o -1?

l'indice dell'ultima posizione aperta è sempre 1 perché è l'ultima !!!

Ovviamente sto fraintendendo l'INDEX ....

indizio chi lo sa?


l'indice dell'ultimo aperto è sempre 1 perché è l'ultimo !!! Non 1, ma 0, e non nella storia. Nella storia 0 è l'indice dell'ultima posizione chiusa o dell'ultimo ordine cancellato, e non sempre, perché oltre al mercato, ci sono anche ordini pendenti, che non sono posizioni.
 
Profi, per favore dimmi come scrivere programmaticamente quanto segue: "Mettere un ordine pendente a livello SL con i parametri di un ordine di chiusura tenendo conto dello spread" e dove inserirlo nel codice di un EA?
 
yosuf:
Prof., mi dica per favore come scrivere programmaticamente quanto segue: "Mettere un ordine pendente a livello SL con i parametri di un ordine di chiusura incluso lo spread" e dove allegarlo nel codice EA?

Non si può fare con i parametri di un ordine stretto. Anche il prezzo di apertura è un parametro.
 

TarasBY

Sì, ho fatto come hai scritto. E non si compila.

Ovviamente, ho fatto qualcosa di sbagliato, ma non so cosa esattamente. Puoi andare avanti passo dopo passo.

 
rigonich:

Non c'è modo con i parametri di quello da chiudere. Anche il prezzo di apertura è un parametro.
Perché? Per esempio, è stato aperto un ordine con O=1.2900, TP 1.300 e SL 1.2800. L'ordine pendente dovrebbe avere i parametri BAY O= 1,2800 con TP 1,2900 e SL 1,2700. Se possibile, si prega di considerare la diffusione come persa.
 
yosuf:
Perché? Per esempio, un ordine BAY è aperto a O= 1,2900 con un TP di 1,300 e un SL di 1,300. L'ordine pendente dovrebbe avere i parametri BAY O= 1,2800 con TP 1,2900 e SL 1,2700. Se possibile, si prega di considerare la diffusione come persa.


Il primo ordine ha un prezzo aperto di 1,2900 e TP di 1,300. Il secondo ordine ha un prezzo aperto di1,2800 e TP di 1,290. Si tratta di parametri diversi. Il primo è BAY, il secondo è BAY_STOP. Anche questi sono parametri diversi. E quando si chiude sullo SL, si perde non lo spread, ma molto di più (spread+SL*Point).
Motivazione: