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

 
edyuson:

Non ti sto incolpando, non è il mio puzzle. Ho solo trovato un algoritmo simile, di cui ho bisogno e sto cercando di finirlo, proprio come mi serve. https://www.mql5.com/ru/code/9927 Quello che ho rimosso, quello che ho lasciato.

lo voglio 0.01,0.01,0.01; 0.02,0.02,0.02; 0.04,0.04,0.04; 0.08,0.08,0.08......

alcuni lo fanno tramite un array
 
YOUNGA:
alcuni lo fanno attraverso un array


come questo:

double mas[3];
int q;
int w;

for (int z=OrdersHistoryTotal()-1; z>0; z--)
{
 OrderSelect(z, SELECT_BY_POS, MODE_HISTORY);
 if (OrderSymbol()==Symbol())
 {
  if (OrderProfit()>0 || q>=3) break;
  if (OrderProfit()<0)
  {
  mas[q]=OrderLots();
  q++;
  }
 }
}
if (mas[0]<0 && mas[1]<0 && mas[2]<0) w=1; //Ваше условие
 

Ciao!

Gente, potete consigliarmi come controllare se una coppia di valute è disponibile quando si avvia un indicatore?

Sono stufo di combattere con questo em-ku-el.

Ecco il codice:

[CODE]

extern string CurrencyPair = "";
string gsSymbol, gsIndiName;

bool bIndicatorError;

...

int start() {

if (StringLen(CurrencyPair) == 0)
gsSymbol = Symbol();

else

gsSymbol = CurrencyPair;

Comment(MarketInfo(gsSymbol, MODE_TRADEALLOWED)); // ЗАКОВЫКА ЗДЕСЬ, это чудо всегда возвращает 0.0000000 при старте терминала. Если же потом открыть свойства индикатора и даже ничего не поправлять в параметрах, то возвращает 1.000000

if (!MarketInfo(gsSymbol, MODE_TRADEALLOWED)) {
Alert(gsIndiName, ": Trade is not allowed for symbol [", gsSymbol,"]");
bIndicatorError = true;
return(-1);
}

}

[CODE]

Forse c'è un modo più facile e affidabile.

In generale, non capisco come si possano scrivere programmi in un linguaggio in cui le funzioni di base funzionano e poi non funzionano.

 
Puoi dirmi se è possibile fare uno script con parametri personalizzabili? Credo di aver visto da qualche parte uno script che ti chiede di inserire i parametri quando lo esegui.
 
sss2019:
Puoi dirmi se è possibile fare uno script con parametri personalizzabili? Credo di aver visto da qualche parte uno script che ti chiede di inserire i parametri quando lo esegui.
Rendere i parametri esterni esterni nello script
 
artmedia70:
rendere i parametri esterni esterni nello script


Ho fatto i parametri

extern string StartTime = "2011.01.01";
extern string EndTime = "2011.01.25";

ma per qualche motivo lo script non visualizza le loro impostazioni prima dell'esecuzione

 
Dobr:


come questo:

double mas[3];
int q;
int w;

for (int z=OrdersHistoryTotal()-1; z>0; z--)
{
 OrderSelect(z, SELECT_BY_POS, MODE_HISTORY);
 if (OrderSymbol()==Symbol())
 {
  if (OrderProfit()>0 || q>=3) break;
  if (OrderProfit()<0)
  {
  mas[q]=OrderLots();
  q++;
  }
 }
}
if (mas[0]<0 && mas[1]<0 && mas[2]<0) w=1; //Ваше условие
0.01,0.02,0.04,0.08,0.16... Mi serve 0.01,0.01,0.01; 0.02,0.02,0.02; 0.04,0.04,0.04; 0.08,0.08,0.08......
 
sss2019:


Ho fatto i parametri

ma per qualche motivo lo script non visualizza le loro impostazioni prima dell'esecuzione

https://docs.mql4.com/ru/basis/preprosessor/compilation
 
edyuson:
0.01, 0.02, 0.04, 0.08, 0.16... Mi serve 0.01,0.01,0.01; 0.02,0.02,0.02; 0.04,0.04,0.04; 0.08,0.08,0.08......


Ho scritto ESEMPIO... ;)

Ecco una versione più accurata:

double mas[3]={0,0,0};
int q=0;
int w=0;
int z=0;
for (z=OrdersHistoryTotal()-1;z>0; z--)
{
 OrderSelect(z, SELECT_BY_POS, MODE_HISTORY);
 if (OrderSymbol()==Symbol())
 {
  if (OrderProfit()>0 || q==3) break;
  if (OrderProfit()<0)
  {
  mas[q]=OrderLots();
  q++;
  }
 }
}
if (mas[0]==lot && mas[1]==lot && mas[2]==lot) w=1;
if (w==1) lot=OrderLots()*2;
 
ForexTader:


In generale, non capisco come si possano scrivere programmi in un linguaggio in cui le funzioni di base funzionano, e poi non lo fanno.


Potete provare a trasferire una parte dei controlli da init a start. Potete anche controllare lo stato del terminale, e così via.
Motivazione: