[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 1095

 
Non ho scritto subito un EA senza indicatori, non ci sono indicatori, solo ordini di acquisto e vendita e così via--- e poi i periodi che sono cambiati nel tester e il risultato finale è ancora nulla non capisco
 
5drakon:
Non ho scritto subito un EA senza indicatori, non ci sono indicatori, solo ordini di acquisto e vendita e così via--- e poi i periodi che sono cambiati nel tester e il risultato finale è ancora nulla non capisco

Non si può dire nulla senza l'Expert Advisor stesso. Sto solo tirando a indovinare.
 

Cosa devo fare con Ilan6 per farlo iniziare a commerciare? Con quanti soldi comincia a funzionare e funziona anche con un centesimo?

 
5drakon:
Non ho scritto subito un EA senza indicatori, non ci sono indicatori, solo ordini di acquisto e vendita e così via--- e poi i periodi che sono cambiati nel tester e il risultato finale è ancora nulla non capisco

Sì, dovremmo guardare il codice stesso. Non ha nessuna strategia, in base ai cui calcoli apre e chiude gli ordini?
 

Può dirmi dov'è l'errore? Se c'è un ordine di mercato per vendere il nostro strumento finanziario, allora chiudilo e se non c'è un ordine di acquisto, allora apri un ordine di acquisto. Qui tutto è normale con la chiusura, ma li apre non una volta, ma ad ogni spunta.

//--------------------------------------------------------------------------------------------

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
int sells=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
sells++;
}
}
if (sells==0)
{
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
//--------------------------------------------------------------------------------------------

 
kolyango:

Puoi dirmi dov'è l'errore? Se c'è un ordine di mercato per vendere il nostro strumento finanziario, allora chiudilo e se non c'è un ordine di acquisto, allora apri un ordine di acquisto. Qui tutto è normale con la chiusura, ma li apre non una volta ma ad ogni spunta.

//--------------------------------------------------------------------------------------------

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
int sells=0;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
sells++;
}
}
if (sells==0)
{
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
//--------------------------------------------------------------------------------------------


O è meglio farlo? Se non ci sono ordini di vendita, non apriremo un ordine di acquisto.

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------

 

Regola per l'esecuzione dell'istruzione for


Quando si passa il controllo all'istruzione for, esegue Expression_1. Mentre la condizione dell'istruzione for è vera: passare il controllo alla prima istruzione del corpo del ciclo, e dopo che tutte le istruzioni del corpo del ciclo sono state eseguite, eseguire Expression_2 e passare il controllo all'intestazione per controllare se la condizione è vera. Se la condizione dell'istruzione for è falsa: passa il controllo all'istruzione che segue l'istruzione for.

Dimmi: è arrivato un tick, la condizione dell'operatore for è vera, il controllo è passato oltre - tutto questo accadrà durante un tick, cioè tutti questi operatori saranno eseguiti durante 1 tick oppure no.

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------

O esattamente quali operatori saranno eseguiti durante questo tick? Tutti i precedenti o quali saranno eseguiti durante il prossimo tick? Spiegare...

 
kolyango:

Regola per l'esecuzione dell'istruzione for


Quando si passa il controllo all'istruzione for, esegue Expression_1. Mentre la condizione dell'istruzione for è vera: passare il controllo alla prima istruzione del corpo del ciclo, e dopo che tutte le istruzioni del corpo del ciclo sono state eseguite, eseguire Expression_2 e passare il controllo all'intestazione per controllare se la condizione è vera. Se la condizione dell'istruzione for è falsa: passa il controllo all'istruzione che segue l'istruzione for.

Dimmi: è arrivato un tick, la condizione dell'operatore for è vera, il controllo è passato oltre - tutto questo accadrà durante un tick, cioè tutti questi operatori saranno eseguiti durante 1 tick oppure no.

O esattamente quali operatori saranno eseguiti durante questo tick? Tutti i precedenti o quali saranno eseguiti durante il prossimo tick? Spiegare...


La funzione start() viene eseguita quando arriva il primo tick. Se arrivano altri tick mentre la funzione è in esecuzione, saranno saltati.

La funzione di avvio sarà eseguita completamente secondo la sua logica

 
kolyango:

Regola di esecuzione degli statement for


Quando si passa il controllo all'istruzione for, eseguire l'espressione_1. Mentre la condizione dell'istruzione for è vera: passare il controllo alla prima istruzione del corpo del ciclo, e dopo che tutte le istruzioni del corpo del ciclo sono state eseguite, eseguire l'espressione_2 e passare il controllo all'intestazione per controllare se la condizione è vera. Se la condizione dell'istruzione for è falsa: passa il controllo all'istruzione che segue l'istruzione for.

Dimmi: è arrivato un tick, la condizione dell'operatore for è vera, il controllo è passato oltre - tutto questo accadrà durante un tick, cioè tutti questi operatori saranno eseguiti durante 1 tick oppure no.

extern double LOT = 0.01;
//--------------------------------------------------------------------------------------------
int start()
{
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if (OrderSymbol() !=Symbol() || OrderType() !=OP_SELL ) continue;
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),3,White);
Alert (GetLastError()); // Выводит сообщение об ошибке
OrderSend(Symbol(),OP_BUY,LOT,Ask,1,Bid-400*Point,Bid+400*Point,0,Green);
Alert (GetLastError()); // Выводит сообщение об ошибке
return(0);
}
}
}
//--------------------------------------------------------------------------------------------

O esattamente quali operatori saranno eseguiti durante questo tick? Tutti i precedenti o quali saranno eseguiti durante il prossimo tick? Spiegare...


L'ho capito. Tutti gli operatori saranno eseguiti se la condizione è esaurita.
 
Come faccio a far sì che questo codice controlli se abbiamo già un ordine di acquisto o meno prima di comprare. Se non ci sono ordini di acquisto sul mercato, allora solo allora eseguite l'acquisto?