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

 
Rustbunch:

Aiutatemi a trovare un EA o uno script, ce ne deve essere uno pronto...

Ho bisogno di un EA per aprire un'operazione con una certa perdita e profitto in un certo momento sul mercato. Non ho bisogno di nient'altro da esso...

Grazie in anticipo.

Qualsiasi Expert Advisor fa questo in MetaEditor, e gli script corrispondenti in MetaEditor!

if(Hour() >= xx) открыть;
 
Perché ho la contabilità dell'ordine in un array, è tutto pezzato.
 
if (!PozyProstavleny){ ArrayResize(Buy,Raz);ArrayResize(Sell,Raz);
   
           Price= (Ask+Dist*Point) ; TP_BUY=(Price+TP*Point);  SL_BUY= (Price- SL*Point);
           Price_SELL= (Bid-Dist*Point) ;  TP_SELL=Price_SELL-TP*Point;  SL_SELL=Price_SELL+SL*Point; K=1;
           
   for(int Raz1=0;Raz1<Raz;Raz1++){
   
           Sleep(2000); RefreshRates();  for(int A=25;A>=0;A--){if(IsTradeAllowed())break;if(A==0) Comment(" эксперту не разрешено 
торговать или поток для выполнения торговых операций занят "); }           
  tyccBuy= OrderSend (Symbol( ), OP_BUYSTOP,  Lot ,NormalizeDouble(Price, Digits), 5, NormalizeDouble( SL_BUY,Digits),  
 NormalizeDouble( TP_BUY,Digits), NULL, 450, 0, CLR_NONE);
   Buy[Raz1]= tyccBuy;
           Price= (Price+Dist*Point) ; TP_BUY= (Price+TP*Point); SL_BUY= (Price- SL*Point);
           Error=GetLastError();
     if (Error!=0){ string errorcomment = "Ошибка открытия ордера байстоп  "  + " " + Symbol() +  " " + ErrorDescript(Error); 
           Print (errorcomment);}
           
           Sleep(2000); RefreshRates();  for( A=25;A>=0;A--){if(IsTradeAllowed())break;if(A==0) Comment(" эксперту не разрешено торговать
 или поток для выполнения торговых операций занят "); }        
           Sell[Raz1]=OrderSend (Symbol( ), OP_SELLSTOP,  Lot ,NormalizeDouble(Price_SELL, Digits), 5, NormalizeDouble( SL_SELL,Digits), 
  NormalizeDouble( TP_SELL,Digits), NULL, 450, 0, CLR_NONE);
     Price_SELL= (Price_SELL -Dist*Point) ;TP_SELL=Price_SELL-TP*Point;   SL_SELL=Price_SELL+SL*Point;
            Error=GetLastError();if (Error==0)
            
            {errorcomment = "Ошибка открытия ордера селлстоп  "  + " " + Symbol() +  " " + ErrorDescript(Error); 
        Print (errorcomment);} PozyProstavleny=1; 
                       }
                       }   
                        
 

Buona giornata a tutti voi!

Sono un novellino. È la prima volta che provo a mettere un'idea in codice nel tester.

L'idea è semplice - aprire un ordine alternativamente su e giù al prezzo di apertura di ogni candela oraria.

Ho scritto un semplice codice .... Ma il problema è che il programma a volte apre più di 1 ordine all'apertura di una candela.

Mi sembra che succeda quando più di 1 tick arriva in 1 secondo.

Ho provato a mettere nell'intestazione della condizione if( ) ...

Totale ordini()==0

Solo un ordine si apre davvero.



Ma questa variante non mi soddisfa perché il giorno dopo la candela data non viene aperta, poiché al momento dell'apertura di questa candela

C'è già un numero casuale di ordini nel commercio.

Ho anche provato a interrompere l'esecuzione di OrderSend(Symbol(),OP_BUY,0.1,Price,3,SL,TP) con return; ..... non ha aiutato.


Vi sarei grato se mi diceste come fare in modo che solo 1 ordine sia aperto a qualsiasi tick entro 1 secondo.

int start()

{
double Price=Ask;
double SL=Price-300*Point;
double TP=Price+300*Point;
if( Hour()==10 && Minute()== 00 && Seconds()==00)
OrderSend(Symbol(),OP_BUY,0.1,Prezzo,3,SL,TP);
}

 
E così via.
 
Dimka-novitsek:
Beh, non so come, ma i dati dovrebbero essere salvati.

//записать

void SaveArray(string File, double &a[])
{
    int h = FileOpen(File, FILE_BIN|FILE_WRITE);
    if(h>0)
    {
      int sz = ArraySize(a); 
      FileWriteArray(h,a,0,sz);
      FileClose(h);
    }
}

//прочитать

void OpenArray(string File, double &a[], int sz)
{
    int h = FileOpen(File, FILE_BIN|FILE_READ);
    if(h>0)
    {
      ArrayResize(a,sz);
      FileReadArray(h,a,0,sz);
      FileClose(h);
    }
}
 
solnce600:

Buona giornata a tutti voi!

Sono un novellino. È la prima volta che provo a mettere un'idea in codice nel tester.

L'idea è semplice - aprire un ordine alternativamente su e giù al prezzo di apertura di ogni candela oraria.

Ho scritto un semplice codice .... Ma il problema è che il programma a volte apre più di 1 ordine all'apertura di una candela.

Mi sembra che succeda quando più di 1 tick arriva in 1 secondo.

Ho provato a mettere nell'intestazione della condizione if( ) ...

Totale ordini( )==0

Solo un ordine si apre davvero.



Ma questa variante non mi soddisfa perché il giorno dopo la candela data non viene aperta, poiché al momento dell'apertura di questa candela

C'è già un numero casuale di ordini nel commercio.

Ho anche provato a interrompere l'esecuzione di OrderSend(Symbol(),OP_BUY,0.1,Price,3,SL,TP) con return; ..... non ha aiutato.

Vi sarei grato se mi diceste come fare in modo che solo 1 ordine sia aperto a qualsiasi tick entro 1 secondo.

int start()

{
doppio Price=Ask;
doppio SL=Prezzo-300*Punto;
doppio TP=Prezzo+300*Punto;
if( Hour()==10 && Minute()== 00 && Seconds()==00)
OrderSend(Symbol(),OP_BUY,0.1,Price,3,SL,TP);
}

Se questo è TechZad, sei nel lavoro!
 
Grazie!!!!!!
 

solnce600:

Vi sarei grato se mi diceste come fare in modo che entro 1 secondo, solo 1 ordine sia aperto su qualsiasi tick.

int start()
{
...

int ot=OrdersTotal();

bool open_allowed = true;

if(ot>0)
{
   if(OrderSelect(ot-1,SELECT_BY_POS))
   {
      if(TimeCurrent()-OrderOpenTime()<=1) open_allowed=false;  //если разница между текущим временем сервера и временем открытия последнего ордера 1 секунда или меньше, запретить торговлю
   }
}

if(open_allowed)
{
   //открываемся
}
...
}
 
Giusto... Dichiarare qualche variabile prima di iniziare, ricordare il tempo. Dopo aver effettuato un ordine, è uguale, diciamo, alla verità. Prima di impostarlo controlla anche la sua presenza. Non sono bravo nelle variabili temporali. Prima che l'ordine sia piazzato, controlla se il tempo è maggiore del tempo vero se è aggiunto a questa variabile. Se non è maggiore, allora ordina, e ricorda di nuovo il nuovo tempo! Sì, è così che va. Un po' semplice anche!!!