Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 197

 
Aleksandr Verkhozin:


Ho guardato il video sul lavoro con l'indicatore esterno, ho scritto un po' di codice per vedere i valori dei buffer nel tester:

void OnTick()

{

double Buf1=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",0,1);

double Buf2=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",1,1);

double Buf3=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",2,1);

double Buf4=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",3,1);

Comment("Buf1=",Buf1,"\n", "Buf2=",Buf2,"\n","Buf3=",Buf3,"\n","Buf4=",Buf4);

}

Le zone appaiono e scompaiono in modalità di visualizzazione. Ma il valore dei buffer è comunque sempre zero. Non c'è modo di formalizzare queste zone nel codice?

Forse c'è una funzione, diversa da iCustom, che sarebbe adatta a tali indicatori? Forse qualcuno ha scritto gufi con tali indicatori?


Non c'è modo di usare i buffer degli indicatori, memorizzano valori frattali.

Nelle proprietà dell'indicatore fractals_show = true; li vedrete sul grafico

Zone, oggetto grafico OBJ_RECTANGLE

Potete ottenere il valore di queste zone usando


ObjectGet

Restituisce il valore di una proprietà dell'oggetto specificato.

doppioObjectGet(
stringaobject_name,// nome dell'oggetto
intindex// identificatore di proprietà
);


Si passa in rassegna tutti gli oggetti, si trova quello giusto e si trova il percorso.

 int obj_total=ObjectsTotal(); 
  string name; 
  for(int i=0;i<obj_total;i++) 
    { 
     name = ObjectName(i);
     Print(i," - объект ",name); 
    }

Approssimativamente, appare così

 
Artyom Trishkin:
Sai, proprio in questo thread ho postato un template per un trawl che usa il valore dell'indicatore inviatogli nei suoi calcoli. Cercate, non siate pigri.

Ho bisogno di un trailing stop corretto sulle posizioni aperte. Alla fine ce ne sono 1 o 3 e sono legate da un valore Step, cioè sistema stop/reverse. Da qui la complessità. O forse è più facile seguire tutti gli ordini usando la funzione CalculateProfit(). Ora non riesco a capire come il valore dell'indicatore in questo schema di gestione degli ordini possa essere collegato al trailing del profitto totale delle posizioni aperte.
 
geratdc:

Ho bisogno esattamente del corretto trailing stop sul profitto delle posizioni aperte. Alla fine ce ne sono 1 o 3 e sono legati dal valore Step, cioè è un sistema stop and reverse. Da qui la complessità. O forse è più facile seguire tutti gli ordini usando la funzione CalculateProfit(). Ora non riesco a capire come il valore dell'indicatore in questo schema di gestione degli ordini possa essere collegato al trailing del profitto totale delle posizioni aperte.

L'indicatore, il suo valore, può essere un valore diverso, per esempio, dal MAK sulla barra desiderata. Il valore del prezzo calcolato per spostare lo stop totale delle posizioni può essere inviato al trawl.

Tuttavia, non è chiaro che tipo di pesca a strascico ha sulle posizioni aperte - cosa e quando esattamente pesca a strascico.

 
geratdc: Sto cercando la pesca a strascico corretta per il profitto

Tutti i sentieri sono qui. Dal file TrailingFuncLib.mq4 prendo la funzione TrailingStairs - STANDARD-STANDARD Trailing. Ogni ordine è seguito in modo indipendente.

 
Artyom Trishkin:

L'indicatore, il suo valore, può essere un valore diverso, per esempio, dal MAK sulla barra desiderata. Il valore del prezzo calcolato per spostare lo stop totale delle posizioni può essere inviato al trawl.

Tuttavia, non è chiaro che tipo di pesca a strascico ha sulle posizioni aperte - cosa e quando esattamente pesca a strascico.


In linea di principio, sì, una volta mi è stato offerto uno strascico per prezzo medio. Tutto sembra logico, ma cosa significa - prezzo medio? È (prezzo di 1 ordine + Step*Point + (prezzo di 2 ordini + Step*Point) + prezzo di 3 ordini) / 3? Quindi è un sacco di parametri - devi richiamare le posizioni aperte e il prezzo corrente di ogni posizione. Comunque, questo trailing stop mi preoccupa meno del fatto che l'EA perde valore durante i test. Cosa succederà nel trading reale? Può essere impostato, ma di nuovo non sappiamo che piega prenderà il grafico delle valute tra una settimana o un mese, quindi c'è una debolezza - se vengono aperti 3 ordini e c'è un contro-movimento nel mercato, l'Expert Advisor fallirà a causa del drawdown. Quindi, dovremmo pensare a limitare il drawdown e a chiudere le posizioni prima che il deposito si azzeri. Per farla breve, è Fox che mi interessa di più)))
 

Non riesco a capirlo da solo e non ho nemmeno trovato informazioni specifiche(( L'idea è di segnare i confini dei prezzi nel codice, le zone più vicine costruite dall'indicatore. Ho iniziato a scrivere il codice, ma sono confuso e non so se lo sto facendo bene o no. Non so se lo faccio bene o male.

 int obj_total=ObjectsTotal();       

  string name; 

  for(int i=0;i<obj_total;i++)

  {

  name = ObjectName(i); 

  if(ObjectType(name)==OBJ_RECTANGLE)

  {

    pr1=ObjectGet(name,OBJPROP_PRICE1);// верхняя цена зоны

    pr2=ObjectGet(name,OBJPROP_PRICE2);// нижняя цена зоны

  }  

  }  

E perché il mio codice non è inserito qui, come nell'originale, a multicolori e linee uno accanto all'altro?
 
-Aleks-:

L'ho capito - apparentemente il terminale non aveva abbastanza memoria - ho chiuso un paio di grafici e ha funzionato.

Grazie - in effetti, i calcoli hanno luogo.

E se le variabili non sono di tipo int, ma bool, cosa fare?


//+------------------------------------------------------------------+
//|                                                       Decode.mq4 |
//|                                            Copyright 2017, Vinin |
//|                                             http://vinin.ucoz.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Vinin"
#property link      "http://vinin.ucoz.ru"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int N=162;  //0..162
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   for (int n=0;n<N;n++)
   {
      int tmp=n;
      int a=(int) MathMod(tmp,3);
      tmp=(tmp-a)/3;
      int b=(int) MathMod(tmp,3);
      tmp=(tmp-b)/3;
      bool c= (bool) MathMod(tmp,2);
      tmp=(tmp-c)/2;
      int d=tmp;
   
      Print("N=",n,"; A=", 2+2*a, "; B=", b+1,"; C=",c,"; D=", 16+4*d);
   }
  }
//+------------------------------------------------------------------+
 
Victor Nikolaev:

Scusa, ma questo codice è diverso dall'ultimo?
 
-Aleks-:

Scusa, ma questo codice è diverso dall'ultimo?


Le differenze sono minime. Una delle variabili è logica.

L'output dirà vero o falso

 
Victor Nikolaev:


Le differenze sono minime. Una delle variabili è logica.

L'output dirà vero o falso

Sei sicuro di aver guardato l'ultimo codice che hai postato? Se è così, ho bisogno di riposo... grazie.