Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 621

 
YuraZ:



Grazie!!!!!!!!!!!!

Se non pensi che sia impertinente.....:))) consigliare come eseguire il Tester correttamente. Nel modo in cui sto provando, non funziona.

#import  "shell32.dll"
    int ShellExecuteA(int hwnd,string Operation,string File,string Parameters,string Directory,int ShowCmd); 
#import

int Start;

int start()
   {
    //---------------------------------- Запустим Тестер -------------------------
    //Start   = ShellExecuteA(0, "Open", "terminal.exe", FileOptim, PuthTester_h, 3);
    //Start   = ShellExecuteA(0, "Open", "terminal.exe", "optimise.ini", "D:\Alpari_Terminal_Tester\tester", 3);

    return(0);
   }
 
Leo59:

Grazie!!!!!!!!!!!!

Se non pensi che sia impertinente.....:))) dimmi come far funzionare correttamente il Tester. Nel modo in cui sto provando, non funziona.

L'auto-ottimizzazione ha deciso di farlo! ♪ cool... Questo è un bel tema.

ci sono 2 modi in cui mi piace l'1

1) avviare l'ottimizzazione dall'Expert Advisor sullo stesso terminale

2) configurare uno o più terminali separati - avviarli e poi leggere i risultati dell'ottimizzazione


sembra che tu stia provando il 2° metodo - è più macchinoso.


Sostituiscilo prima.

ShellExecuteA  на ShellExecuteW
 
YuraZ:

L'auto-ottimizzazione ha deciso di farlo! ♪ cool... Questo è un bel tema.

ci sono 2 modi in cui mi piace l'1

1) avviare l'ottimizzazione dall'Expert Advisor sullo stesso terminale

2) configurare uno o più terminali separati - avviarli e poi leggere i risultati dell'ottimizzazione


sembra che tu stia provando il 2° metodo - è più macchinoso.


Prima di tutto dovete sostituirlo con.



Grazie!!!!!!!!
Hai ragione :)) La linea di fondo è l'auto-ottimizzazione.


1) avviare l'ottimizzazione dall'Expert Advisor sullo stesso terminale

Lo faccio sulla base dei risultati attuali del commercio virtuale

2) Configurare uno o più terminali separati - avviarli e poi leggere i risultati dell'ottimizzazione alla fine

Stavo scavando nell'auto_ottimizzazione di XEON in autunno. TestCommander è una scatola nera commerciale. Ho deciso di farlo io stesso per implementare in qualche modo la funzionalità che non funziona nella variante 1).

 
pu6ka:

Lanciando questo indicatore su M1, man mano che appaiono nuove barre, le linee dell'alligatore a sinistra "vengono spazzate via". Hai bisogno di questo?



Risolto il problema.

#property copyright "forexman77@list.ru"
#property link      "forexman77@list.ru"
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red
//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
extern int p  =10;
double val_plus[];
double val_minus[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,ExtMapBuffer2);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int counted_bars=IndicatorCounted(),                      
    limit;
    double
    indicator_plus,indicator_minus;
   if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0;i<limit;i++)
   { 
     indicator_plus=0;
     indicator_minus=0;
     ArrayInitialize(val_plus,0);
     ArrayInitialize(val_minus,0);
   for(int k=p;k>=0;k--)
     {
     ArrayResize(val_plus,p);
     ArrayResize(val_minus,p);
     if(iMA(NULL,PERIOD_CURRENT,21,0,MODE_EMA,PRICE_CLOSE,i+k)>iMA(NULL,PERIOD_CURRENT,21,0,MODE_EMA,PRICE_CLOSE,i+k+1))val_plus[k]=1;
     if(iMA(NULL,PERIOD_CURRENT,21,0,MODE_EMA,PRICE_CLOSE,i+k+1)>iMA(NULL,PERIOD_CURRENT,21,0,MODE_EMA,PRICE_CLOSE,i+k))val_minus[k]=1;

     if (val_plus[k] > 0){indicator_plus=indicator_plus+val_plus[k];}
     if (val_minus[k] > 0){indicator_minus=indicator_minus+val_minus[k];}
     }
          ExtMapBuffer1[i]=indicator_plus;
          ExtMapBuffer2[i]=indicator_minus;
   }

   return(0);
  }
 
Qualcuno può scrivere un semplice codice di script che copi un file da un posto all'altro?

Oppure, che eseguirà il Tester in un terminale diverso?

Beh, non posso ancora. Puoi?

 
Leo59:
Scrivere un semplice codice di script, che copi un file da un posto a un altro, può qualcuno?

Oppure, chi eseguirà il Tester in un terminale diverso?

Qui, ancora non posso. E tu?


E non posso, perché non devo! Ciò che è necessario, sto imparando a farlo da solo, quindi non devo cambiare la mia logica!

Soprattutto perché l'ho fatto io, se hai bisogno di modificare qualcosa, nessun problema!

Imparare dalle basi "partita", con suggerimenti-regali non imparerà e alla fine più tempo sarà sprecato per niente!

Buona fortuna! :)

 
borilunad:


E non posso, perché non è ancora necessario! Ciò che è necessario, sono abituato a farlo da solo, per non cambiare la mia logica!

Una ragione in più per farlo da soli, se avete bisogno di modificare qualcosa, nessun problema!

Imparate le basi, non imparerete con i suggerimenti-regali e finirete per perdere più tempo alla lunga!

Buona fortuna! :)

Hai ragione, "non mangiare la pagnotta di qualcun altro".

La città di Barcellona è incredibile! I binari del tram da soli, disposti tra prati verdi, valgono la pena! Ma le donne in Spagna hanno la pelle corta e la testa dura, non come le nostre donne a San Pietroburgo.
:)) Che sciocchezze non si possono scrivere dalla mente stravagante. Sono io.

Va tutto bene, e buona fortuna anche a te, così come a tutti gli altri!

 
Leo59:

Hai ragione, non si dovrebbe fissare il pane di qualcun altro.

È una città incredibile, Barcellona. Tramway da solo, disposto tra prati verdi, quello che vale! Ma le donne in Spagna hanno la pelle corta e la testa dura, non come le nostre donne a San Pietroburgo.
:)) Che sciocchezze non si possono scrivere dalla mente stravagante. Sono io.

Va tutto bene, e buona fortuna anche a te, così come a tutti gli altri!


Non sto parlando di una "pagnotta", ma di un metodo di apprendimento più produttivo, in modo che "non faccia male dolorosamente per gli anni sprecati"!

Beh, a ciascuno il suo! :(

 
artmedia70:

Forse provate in questo modo:

Inserito un simbolo e una magia nelle variabili da passare. Non avete un controllo su di loro.




Grazie! Lo proverò lunedì. Anche se la domanda non mi è ancora chiara. Se voglio chiudere un ordine, perché ottengo un errore? A proposito, dovrò provare lo stesso codice nel vecchio tester. Il nuovo tester ha molti cambiamenti minori. Non sono sempre sicuro di quale sarà il risultato.
 
001:


Grazie! Lo proverò lunedì. Anche se la questione rimane ancora poco chiara per me. Se voglio chiudere un ordine, perché ottengo un errore? A proposito, dovrò provare lo stesso codice nel vecchio tester. Il nuovo tester ha molti cambiamenti minori. Non sono sempre sicuro di quale sarà il risultato.

Ora non riesco a ricordare... Se vuoi chiudere tutti i Sell, non hai bisogno di tornare dalla funzione. Ho fatto un casino nel sonno. È così che si fa per chiuderli tutti:

//+------------------------------------------------------------------+
void  CheckForLongetivityClose_Sell(int symbol, int magic) {
   if(DayOfWeek()==0 || DayOfWeek()==6) return;
   for(int i=OrdersTotal()-1; i>=0; i--) {
      if(OrderSelect(i,SELECT_BY_POS)) {
         if(OrderMagicNumber()!=magic) continue;
         if(OrderSymbol()!=symbol)     continue;
         if(OrderType()!=OP_SELL)      continue;
         datetime openTime_S= OrderOpenTime();
         int timeDistance_S = TimeCurrent()-openTime_S;
         if(timeDistance_S>60*BarrierMinute_S) {
            bool  res= OrderClose(OrderTicket(),OrderLots(),Ask,3,clrRed);
            }
         }
      }
}
//+------------------------------------------------------------------+

In generale, naturalmente, invece di questa linea

bool  res= OrderClose(OrderTicket(),OrderLots(),Ask,3,clrRed);

Dovete chiamare una funzione normale per chiudere le posizioni che ha un codice di ritorno elaborato dal server.

Motivazione: