[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 476

 
Artemis è super!!!
 
Roman.:


1. Per sicurezza - leggete tutte le informazioni sui miei link dal post 7 di questa pagina.

2. Guardate il trailer per una spiegazione della vostra domanda. Il secondo file è il mio esempio di lavoro con l'ottimizzatore di strategie e la dipendenza, attualmente sul grafico - i valori di stop e profitto del TS-ka, ottenuti come risultato dell'ottimizzazione dal fattore di recupero. Io stesso lo sto usando di recente - lo sto ancora studiando, quindi tutte le domande ai suoi autori. Guarda il loro sito web attraverso la pagina.

3. Tutti, IMHO.


Ooh, figo!!! Quel programma non si chiama Excel? Come si usa, come si salva?
 

Sono un principiante totale in questo, ma per favore aiutatemi a scrivere un EA che funzioni in questo modo, prima basta aprire un ordine di acquisto e mettere un take profit e uno stop loss, poi se questo ordine viene chiuso quando scatta il take profit, allora apre lo stesso ordine per comprare, e se chiuso quando scatta lo stop loss è per vendere
 
Come posso salvare i risultati in excel? Nel tester ho cliccato su salva tutto, ho trovato e aperto excel, ho cliccato su incolla su sfondo bianco, non è successo niente. Forse mio fratello arriverà presto e mi spingerà fuori, a causa del computer.
 
dkfl.zrjdktdbx:
Come posso salvare i risultati in excel? Nel tester ho cliccato su salva tutto, ho trovato e aperto excel, ho cliccato su incolla su sfondo bianco, non è successo niente. Forse mio fratello arriverà presto e mi spingerà fuori, a causa del computer.
Forse dovrei prendere un secondo computer.
 
Un giorno...
 
dkfl.zrjdktdbx:
Come posso salvare i risultati in excel? Nel tester ho cliccato su salva tutto, ho trovato e aperto excel, ho cliccato su incolla su sfondo bianco, non è successo niente. Forse mio fratello arriverà presto e mi spingerà fuori, a causa del computer.

Copia tutto e incolla, solo il nome delle colonne che devo scrivere, e la redditività si traduce in mesi a me.
 
dkfl.zrjdktdbx:

Ooh, figo!!! Quel programma non si chiama Excel? Come usarlo, come salvarlo?

Leggete il suo aiuto e la documentazione di MicrosoftOffice-excel... :-)
 

Compagni, recentemente ho fatto una domanda sul fatto che l'EA funziona in modo diverso su un conto reale rispetto allo strategy tester. Hai detto che senza il codice dell'EA stesso non c'è modo di capirlo. Ecco il codice:

In poche parole, l'EA lavora sul principio della Martingala, cioè apre con un doppio lotto se il trade precedente non ha avuto successo. Se è sbagliato più di 3 volte, allora assumo che sia iniziato un flat e cambio le dimensioni dei lotti e degli stop, ma proporzionalmente come se l'EA stesse ancora aprendo nell'altra direzione con doppio lotto.

Se tutto è andato bene, si apre nella stessa direzione con un lotto. Ecco il problema: nello Strategy Tester tutto funziona bene, ma nel mio conto reale sta già aprendo il 2° trade con lotto 0,24 (questo numero è impostato nella funzione switch)... Aiuto per favore ... Voglio davvero provarlo su un conto reale, il problema mi tiene nel conto demo =(

//+------------------------------------------------------------------+ 
//| StMartin++.mq4 | 
//| Sergey Kodolov | 
//| 84232676421@mail.ru | 
//+------------------------------------------------------------------+ 
#property copyright "Sergey Kodolov" 
#property link "84232676421@mail.ru" 

    extern int TP = 1000; 
    extern int TS = 1000; 
    extern double lots = 0.1; 

    double volumz; 
    int ticket,total; 
    int slip = 3; 
    int Magic = 4; 


    static int CriticalTicket = 0; 

    int TicketArray[4]; //миссив с тикетами
    int CTicketArray[10]; //массив с критическими тикетами

    void FormTicket(int number) //объявил шаблон под функцию запоминания тикетов 
    { 
      for(int i=3;i>0;i--) 
      { 
         TicketArray[0] = ticket; 
         if(TicketArray[0]>0 && TicketArray[0] == TicketArray[1])break; 
         TicketArray[i] = TicketArray[i-1]; 
      } 
    } 
    
    void FormCriticalTicket(int number1) //сюда записываю критическме тикеты
    { 
      for(int i=9;i>0;i--) 
      { 
         CTicketArray[0] = CriticalTicket; 
         if(CTicketArray[0]>0 && CTicketArray[0] == CTicketArray[1])break; 
         CTicketArray[i] = CTicketArray[i-1]; 
      } 
    }  


//+------------------------------------------------------------------+ 
//| expert initialization function | 
//+------------------------------------------------------------------+ 
int init() 
  { 
//---- 
     if(OrdersHistoryTotal()==0) 
     { 
        ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,"First order",Magic,0,Yellow); //открываем первый ордер 
     } 
//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+ 
//| expert deinitialization function | 
//+------------------------------------------------------------------+ 
int deinit() 
  { 
//---- 

//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+ 
//| expert start function | 
//+------------------------------------------------------------------+ 
int start() 
  { 
//---- 
FormCriticalTicket(CriticalTicket); //вызываем функцию, что запоминала критические тикеты
int CritLot = crit(); //функция берет минимальное значение из массива критических тикетов
int OrderTimeCheck = check3(); //проверяем, закрыт ли ордер 
bool OrderCloseCheck = check2(OrderTimeCheck); //проверяем, закрылись ли ордера в минус 
FormTicket(ticket); //вызываем функцию, чтоб запоминала тикеты 
OrderOpenFunction(OrderCloseCheck,CritLot); //тут открываем ордера 

//---- 
   return(0); 
  } 
//+------------------------------------------------------------------+ 


int crit()
{
   return(ArrayMinimum(CTicketArray,6,1));
}

int check3() //проверяем, закрыт ли ордер 
{ 
   OrderSelect(TicketArray[1],SELECT_BY_TICKET); 
   if(OrderClosePrice()==OrderTakeProfit()) 
      { 
         CriticalTicket=0;
      } 
   if(OrderCloseTime()>0)return(100); 
} 

bool check2(int OrderTimeCheck) //проверяем, если ордер закрыт, то последние 3 закрытых ордера были ли убыточными? 
{ 
   if(OrderTimeCheck == 100) 
   { 
      bool flag = true; 
      for(int j=1;j<4;j++) 
      { 
         OrderSelect(TicketArray[j],SELECT_BY_TICKET); 
         if(OrdersHistoryTotal()>2) 
         { 
            if(OrderClosePrice()!=OrderStopLoss()) 
            { 
               flag = false; 
            } 
         } 
         if(OrdersHistoryTotal()<=2) 
         { 
            flag = false; 
         } 
      } 
      return(flag); 
   } 
   else
      return(false); 
} 

void OrderOpenFunction(bool OrderCloseCheck, int CritLot) 
{ 
   total = OrdersTotal();
   if(OrderCloseCheck==true)
   {
      int TP1,TS1;
      double m1,m2,m3,m4,m5,m6;
      m1=1.2;
      m2=1.25;
      m3=2.0;
      m4=1.0;
      m5=1.25;
      m6=1.0;
   
      OrderSelect(TicketArray[1],SELECT_BY_TICKET); 
      switch(CritLot)
      {
         case 1: volumz = (OrderLots()*2)*m1;
                  TP1=TP/m1;
                  TS1=TS/m1; 
                  break;
         case 2: volumz = (OrderLots()*2)*m2/m1;
                  TP1=TP/m2;
                  TS1=TS/m2; 
                  break;
         case 3: volumz = (OrderLots()*2)*m3/m2;
                  TP1=TP/m3;
                  TS1=TS/m3; 
                  break;
         case 4: volumz = (OrderLots()*2)*m4/m3;
                  TP1=TP/m4;
                  TS1=TS/m4;
                  break;
         case 5: volumz = (OrderLots()*2)*m5/m4;
                  TP1=TP/m5;
                  TS1=TS/m5;
                  break;
         case 6: volumz = (OrderLots()*2)*m6/m5;
                  TP1=TP/m6;
                  TS1=TS/m6;
                  break;
      }

      if(total < 1) 
      { 
         if(OrderType()==OP_SELL) 
         { 
            double lot3 = volumz; 
            ticket = OrderSend(Symbol(),OP_BUY,lot3,Ask,slip,Bid-TS1*Point,Bid+TP1*Point,0,Magic,0,Green); 

            if(ticket>0) 
            { 
               CriticalTicket = ticket; 
            } 
         } 
         if(OrderType()==OP_BUY) 
         { 
            OrderSelect(TicketArray[1],SELECT_BY_TICKET); 
            double lot4 = volumz; 
            ticket = OrderSend(Symbol(),OP_SELL,lot4,Bid,slip,Ask+TS1*Point,Ask-TP1*Point,0,Magic,0,Red); 

            if(ticket>0) 
            { 
               CriticalTicket = ticket; 
            } 
         } 
      } 
   }   
   if(OrderCloseCheck==false) 
   { 
      if(total < 1) 
      { 
         OrderSelect(TicketArray[1],SELECT_BY_TICKET); 
         volumz = OrderLots(); 
         if(OrderClosePrice() == OrderStopLoss()) 
         { 
            if(OrderType() == OP_BUY) 
            { 
               double lot1 = volumz*2; 
               ticket = OrderSend(Symbol(),OP_SELL,lot1,Bid,slip,Ask+TS*Point,Ask-TP*Point,0,Magic,0,Red); 
            } 
            if(OrderType() == OP_SELL) 
            { 
               double lot2 = volumz*2; 
               ticket = OrderSend(Symbol(),OP_BUY,lot2,Ask,slip,Bid-TS*Point,Bid+TP*Point,0,Magic,0,Green); 
            } 
         } 
         if(OrderClosePrice() == OrderTakeProfit()) 
         { 
            if(OrderType() == OP_BUY) 
            { 
               ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,slip,Bid-TS*Point,Bid+TP*Point,0,Magic,0,Green); 
            } 
            if(OrderType() == OP_SELL) 
            { 
               ticket = OrderSend(Symbol(),OP_SELL,lots,Bid,slip,Ask+TS*Point,Ask-TP*Point,0,Magic,0,Red); 
            } 
         } 
      } 
   } 
} 

tutte le spiegazioni sono lì... se ho bisogno di più - sarò felice di fornirli.

 
Ciao a tutti, felice anno nuovo. Non riesco a trovare un modo per piazzare un ordine solo una volta, se la condizione è soddisfatta dopo di che l'ordine viene piazzato, allora se c'è un ordine per la seconda volta non verrà piazzato. Se può fare un esempio.
Motivazione: