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

 
ToLik_SRGV:

È vero, credo che Rustam abbia accennato a questo

Sì, l'ho letto dopo averlo postato :)
 
Grazie a tutti, mi rimetto al lavoro :)
 

NON CAPISCO PERCHÉ CI SONO VARIABILI GLOBALI

#property copyright "Copyright © 2010, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

bool
b,s, 
bs,
ss,
bt,
st;
double 
bl,sl;  
//+------------------------------------------------------------------+

SONO USATI PER APRIRE GLI ORDINI

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
if(bs==1&&bl==1)
{
    NewOrder1(OP_BUYLIMIT,Lot);

Today=TimeDay(TimeCurrent())
;}

return(0);}

//+------------------------------------------------------------------+
int NewOrder1(int Cmd,double Lot)
{double TP=0; //тейкпрофит
double SL=0; //стоплосс
double PR=0; //Цена
double LT=0; //Лот
while(!IsTradeAllowed()) Sleep(100);
if(Cmd==OP_BUYLIMIT)
   {PR=Ask-Point*h;
    if(TakeProfit>0) TP=PR+TakeProfit*Point;
    if(StopLoss>0) SL=PR-StopLoss*Point;
    if(Lot>0) LT=3*Lot;
        }
int tic=OrderSend(Symbol(),Cmd,LT,PR,3,SL,TP,0,mag,0,CLR_NONE);
if(tic<0) {Print(GetLastError());
        }else
        {
b=0;s=0;  
bs=0;
ss=0;
bt=0;
st=0;    
bl=0;sl=0; }
return(tic);}

SE UN ORDINE HA UN BIGLIETTO PIÙ GRANDE DI 0, QUESTA FUNZIONE DOVREBBE FUNZIONARE

else
        {
b=0;s=0; 
bs=0;
ss=0;
bt=0;
st=0;   
bl=0;sl=0; }

CHE DOVREBBE CAMBIARE TUTTI I VALORI DELLE VARIABILI GLOBALI A 0 E NON APRIRE DI NUOVO UN NUOVO ORDINE,

MA IN QUALCHE MODO TORNA ALL'APERTURA DELL'ORDINE E APRE NUOVI ORDINI AD OGNI NUOVO TICK.

QUAL È LA RAGIONE DI QUESTO STRANO FENOMENO?

LE VARIABILI GLOBALI SONO IMPOSTATE DA QUI QUANDO SI CHIUDE UN ORDINE A MERCATO

for(int cnt=OrdersHistoryTotal();cnt>0;cnt--)
     {
OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY);
{if(OrderMagicNumber()== mag &&
OrderSymbol()==Symbol()) 
{ if (OrderType() == OP_BUY )  {b=1; if (OrderClosePrice()==OrderTakeProfit()) bt=1; 
if (OrderClosePrice()==OrderStopLoss()) bs=1; bl=OrderLots()*100; break;}
if (OrderType() == OP_SELL)  {s=1; if (OrderClosePrice()==OrderTakeProfit()) st=1; 
if (OrderClosePrice()==OrderStopLoss()) ss=1; sl=OrderLots()*100; break;}
            }
       
         }
      }

ANCHE QUI C'È IL CONSULENTE ESPERTO COMPLETO

File:
test8_2.mq4  7 kb
 
FoxUA:

GENTE, AIUTATEMI, NON CAPISCO...


Dov'è il blocco che riempie queste variabili con dei valori?
Vorrei vedere il codice esatto del vostro Expert Advisor in un unico pezzo, nella forma in cui è compilato e testato.
Non a pezzi, perché questa domanda è rimasta in sospeso per molto tempo, ed è stata risolta più di una volta, ma a causa di questi pezzi nessuno può capire completamente l'intero quadro del problema.

Quindi, per favore, mostrate l'intero quadro in modo che non ci sia confusione.

 
ToLik_SRGV:

Dov'è il blocco che riempie queste variabili con dei valori?
Vorrei vedere il codice esatto del vostro EA in un unico pezzo, nella forma in cui è compilato e testato.
Non a pezzi, perché questa domanda è rimasta in sospeso per molto tempo, e ha avuto molte risposte, ma nessuno può capire completamente l'intero quadro del problema a causa di questi pezzi.

Quindi, per favore, mostrate l'intero quadro in modo che non ci sia confusione.

QUI C'È L'INTERO EA

File:
test8_1.mq4  7 kb
 

chiedere nel thread "scrivo un EA gratis" non sempre ottiene una risposta?

 
diaspar:

chiedere nel thread "scrivo un EA gratis" non sempre ottiene una risposta?

Lasciate che vi chieda: quanto spesso andate a lavorare gratis?
È più o meno la frequenza con cui rispondono.
 
diaspar:

chiedere nel thread "scrivo un EA gratis" non sempre ottiene una risposta?

L'argomento è stato iniziato dal topic-starter. Tuttavia, ha ricevuto molte più richieste di quelle che è in grado di digerire. La logica vuole che sia lui a rispondere - è lui a chiedere. Cosa vi aspettavate?
 
FoxUA:

NON SO COSA C'È DI SBAGLIATO NEL MIO EA, HO PROVATO DI TUTTO E L'UNICO RISULTATO È 1 PER OGNI TICK + 1 ORDINE PENDENTE L'UNICA COSA È CHE QUANDO CHIUDO UN ALTRO MERCATO UNO CAMBIA LA VARIABILE NE APRE UN ALTRO E NE APRE UNO NUOVO CON OGNI TICK

In corso...

Molto probabilmente, il bug è nel blocco che riempie queste variabili con valori (nel ciclo for), ho già trovato un errore (in OrderSelect()) lì, ma il risultato non è ancora cambiato. Sembra essere un bug nella logica del blocco.

P.S.
Si prega di cambiare in caso di simbolo normale.

 
FoxUA:

Il bug è ovvio, ovviamente, apre le posizioni su ogni tick, dato che l'ordine perdente nella storia non va da nessuna parte, quindi lo trova su ogni tick e riempie i valori delle variabili di controllo con gli stessi valori, e quindi il blocco di apertura delle operazioni scatta.