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

 
obla4ko:
Non bisogna pensare come un bastone - è una cosa molto sottile :))), virtuale, direi, e dovrebbe reagire naturalmente alle frodi nella storia. Se non reagisse alle cancellazioni, allora posso immaginare quanto sarebbe lento nella vita reale - 100 sterline all'anno per 10K - nella migliore delle ipotesi... Beh, è più facile tenere i soldi in banca - danno il 3-6%!)

))) Certo che è più facile! Chi può dire... // E chi ha detto che sarebbe stato facile? )))

Una via d'uscita: andare in borsa. Questo tipo di stronzate non succedono lì, in linea di principio. Ma in questo modo... Per tutti i - come dire - ehm... ... stranezze che puoi lavorare anche sul Forex.

Il modo migliore è, ovviamente, quello di testarlo sull'account reale. Se i principi stabiliti nell'Expert Advisor sono corretti (e questo può essere verificato esattamente nel tester), allora, mettendo misure di forza maggiore su un conto reale, il trade sarà buono+. Forse non su +++++++ come nel tester, ma comunque...))

A proposito, tagliare i vuoti, che fanno impazzire gli indicatori, dal flusso delle citazioni aiuta molto. Potete guardare nei miei codici - Kill Gap.

 

Techno:
obla4ko, создайте переменную типа datetime x, и пусть это будет время открытие бара, на котором произошел стоплосс. А в условии открытия поставте, что (Time[0]!=x). При этом x должно обновляться при новом сработавшем стоплосе. Это первый вариант. И второй как я уже в третий раз пишу, после срабатывания стопа включить ожидание 1 бар, это будет совершенно тоже самое, не логично разве?

Ho la parte di codice responsabile dell'apertura di una posizione pubblicata nel mio ultimo post. Potresti per favore mettere quello che hai detto qui dentro - come si dice "meglio visto una volta che...." :)
 

Ciao!!!

A pagina 71 di questo thread, granit77 ha scritto un pezzo molto interessante!

Извините, что встреваю, поделюсь ламерским способом удобной записи множества условий. При наладке легко добавлять/убирать, не заботясь о скобках, и все наглядно. 
if (true
    && StochK_0<StochD_1
    && StochD_1 > 80 
    && cci_0 < cci_1    
    && cci_0 > 100 
    //&& .... а это я пока убрал     
   )

qui c'è un campione e ha cercato di fare qualcosa

if(((Sto_0>Sto_1&&Sto_0< 20)&&(OsMA_0>OsMA_1&&OsMA_0<-P)&&(Macd_0>Macd_1&&Macd_0<-N)))
// это основа
if(true
      &&Sto_0>Sto_1&&Sto_0< 20
      &&OsMA_0>OsMA_1&&OsMA_0<-P
      &&Macd_0>Macd_1&&Macd_0<-N
      )//а это то что получилось

Lo chiedo perché è così insolito.....

 

Perché questo funziona e conta correttamente aumentando il valore di una variabile del 10%:

TStartS = MathRound(TStartS+TStartS*0.1);

... ma questo non lo fa:

TStartS = MathRound(TStartS+TStartS/100*PercentTakePr); // где PercentTakePr - внешняя переменная, равна 10, 20, 30, и т.д. ...
Qual è la differenza, non lo so...
 
artmedia70:

Perché questo funziona e conta correttamente aumentando il valore di una variabile del 10%:

... ma questo non lo fa:

qual è la differenza, non lo so...





o forse è così.

TStartS = MathRound(TStartS+(TStartS/100*PercentTakePr)); 
 

Qual è il problema? Devi solo rompere la stringa in sottostringhe, senza cambiare il contenuto. Tutto funzionerà allo stesso modo, ma è più facile da leggere e modificare, basta commentare le linee non necessarie.

Si scopre che i professionisti scrivono in questo modo da molto tempo, formattandolo anche meglio, così ho inventato la bicicletta. :))

if (true              &&
    StochK_0<StochD_1 && 
    StochD_1 > 80     &&  
    && cci_0 < cci_1  &&   
    && cci_0 > 100 
   )

//((Sto_0>Sto_1&&Sto_0< 20)&&(OsMA_0>OsMA_1&&OsMA_0<-P)&&(Macd_0>Macd_1&&Macd_0<-N))
// Ваш вариант вот так будет выглядеть наиболее прозрачно, на мой взгляд
if (true                         &&
    (Sto_0 >Sto_1  && Sto_0 <20) &&
    (OsMA_0>OsMA_1 && OsMA_0<-P) &&
    (Macd_0>Macd_1 && Macd_0<-N)  
   ) 
 
artmedia70:

Perché questo funziona e conta correttamente aumentando il valore di una variabile del 10%:

... ma questo non lo fa:

Qual è la differenza - non capisco...





0,1 è doppio e 100 è int.

Cerca la conversione dei tipi nel libro di testo.

 
Svinozavr:

0,1 è doppio e 100 è int.

Cerca la conversione del tipo nel libro di testo.

Quindi ho TUTTE le variabili lì int... Si scopre che ... ahi... fanculo ... continuare a scavare...

È così che funziona:

LastTakeProfitS = MathRound(LastTakeProfitS+LastTakeProfitS/100*PercentTakePr);
... e se ci infilate un'altra variabile dello stesso tipo, non funziona... Stamattina mi ha fatto impazzire...
 
obla4ko:

Ho la parte di codice responsabile dell'apertura di una posizione pubblicata nel mio ultimo post. Potresti per favore metterci quello che hai detto qui - come dice il proverbio "meglio visto una volta che...." :)

Ecco uno schema. Non controllato, ma dovrebbe funzionare, le parti mancanti devono essere aggiunte dal codice originale. Il rosso ha segnato il numero che il cambiamento aumenterà l'attesa, il numero 2 significa che una candela in attesa. Se hai bisogno di 2 candele in attesa, mettine tre, ecc.

bool work=1;int tick;datetime t;
int start()
{
  if(!work){if(t!=iTime(NULL,0,1)){t=iTime(NULL,0,1);tick++;}}
  if(tick==2){work=1;tick=0;} 
   
   time();
   if(OrdersTotal()==0)CheckForOpen();
  //-- code
}
//----
void CheckForOpen()
{
   double ma;
   int    res;
    
   ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);

   if(work && Open[1]>ma && Close[1]<ma)  
     {
      res=OrderSend(Symbol(),OP_SELL,Lots,Bid,30,Bid+Stoploss*Point,Bid-Takeprofit*Point,"",MAGICMA,0,Red);
      return;
     }

   if(work && Open[1]<ma && Close[1]>ma)  
     {
      res=OrderSend(Symbol(),OP_BUY,Lots,Ask,30,Ask-Stoploss*Point,Ask+Takeprofit*Point,"",MAGICMA,0,Blue);
      return;
     }

}
//----
void time()
{
static datetime time;
    
  if(OrdersHistoryTotal()==0)return;
  for(int i=0;i<OrdersHistoryTotal();i++)
       {
       OrderSelect(i,SELECT_BY_POS,MODE_HISTORY);
         if(OrderCloseTime()>time && OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
            {
            time=OrderCloseTime();
            if(OrderProfit()<0)work=0;
            }
       }    
   
}
 
artmedia70:

Quindi ho TUTTE le variabili lì int... Si scopre che ... ahi... fanculo ... continuare a scavare...

Questo funziona:

...ma se si inserisce un'altra variabile dello stesso tipo, non funziona... Mi ha fatto impazzire questa mattina...


E'... L'ho trovato... Invece di 100, è 100.0. Ti ucciderei...
Motivazione: