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

 

Ho bisogno che l'indicatore disegni delle frecce sul grafico giornaliero. Presumo che il problema sia nell'uso delle EMA a 15 minuti, tutto funziona sulle EMA a 15 minuti. È possibile fare un indicatore che sia calcolato dal timeframe a 15 minuti e disegnare frecce sul grafico giornaliero?

Qui sotto c'è il codice stesso:

#property copyright ""
#property link      ""

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Magenta
#property indicator_color2 Red

//--- input parameters

//--- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexArrow(0,217);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexEmptyValue(0,0.0);
   SetIndexStyle(1,DRAW_ARROW);
   SetIndexArrow(1,217);
   SetIndexBuffer(1,ExtMapBuffer2);
   SetIndexEmptyValue(1,0.0);
   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
    signal_1,
    signal_2,
    MA_1_t,                                                 
    MA_2_t;
 
   if(counted_bars>0)
      counted_bars--;
   
   limit=Bars-counted_bars;
   
   
   for(int i=0;i<limit;i++)
   {
      MA_1_t=iMA(NULL,PERIOD_M15,3,0,MODE_EMA,PRICE_CLOSE,i+0);  
      MA_2_t=iMA(NULL,PERIOD_M15,3,0,MODE_EMA,PRICE_CLOSE,i+1);  
      signal_1 = (условие);
      signal_2 = (условие);
      if (signal_1 >= определенное число)
      ExtMapBuffer1[i]=High[i]+5*Point;
      else
         ExtMapBuffer1[i]=0.0;
      if(signal_2 >= определенное число)
         ExtMapBuffer2[i]=Low[i]-5*Point;         
      else
         ExtMapBuffer2[i]=0.0; 
   }
   return(0);
  }
//+------------------------------------------------------------------+
 
satorifx:


dist = MathAbs((NormalizeDouble(Bid,Digits)-
NormalizeDouble(ObjectGetValueByShift(TrendLineName,0),Digits))*MathPow(10,Digits));

Il codice trova la distanza dal livello di prezzo corrente al trend tramite TrendLineName. Ma c'è un problema: apparentemente, il trend non viene trasmesso accuratamente tra le metà, e quindi la distanza dal prezzo è abbastanza diversa per le diverse metà. Come aggirare questo problema? Idealmente, anche se la linea di tendenza è visualizzata solo su H1, al tempo di apertura W1 (in realtà a qualsiasi tempo di apertura) la distanza calcolata dovrebbe essere la stessa.


Relativo alla domanda nella citazione sopra, un'altra domanda: come faccio a simulare un time frame diverso da quello aperto sul grafico? Cioè, per esempio, con D1 aperta, devo calcolare su M30?
 
Ho cercato su Internet, ho trovato qualcosa, ma l'ho provato e non ha funzionato! Aiutami ad aggiungere un trailing stop)) dovrebbe funzionare così - se il prezzo sale / scende (in profitto) a "X" punti, innesca un trailing stop a "Y" punti di quel prezzo e si muove in direzione redditizia con incremento "Z". Molte grazie a chi aiuta))))))

//+------------------------------------------------------------------+
//| sobstvennyi_probnyi_sovetnic.mq4 |
//| Antonico |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#proprietà copyright "Antonico"
#proprietà link "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| funzione di inizializzazione dell'esperto |
//+------------------------------------------------------------------+
doppio lotto=1;
extern double sl=30;
extern double tp=30;
extern double koeff=2;
int pon=1;
int vtor=0;
int sred=3;
int hetver=0;
int patn=0;


int init()
{
//----

//----
ritorno(0);
}
//+------------------------------------------------------------------+
//| funzione di deinizializzazione esperto |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
ritorno(0);
}
//+------------------------------------------------------------------+
//| funzione di inizio esperto |
//+------------------------------------------------------------------+
int start()

{ int otkrord=OrdersTotal();
se (DayOfWeek()==pon || DayOfWeek()==vtor || DayOfWeek()==sred || DayOfWeek()==hetver || DayOfWeek()==patn || DayOfWeek()==6 || DayOfWeek()==0 || otkrord >0) return(0);



se(OrdiniStoriaTotale()==0)
{lot=1;}

if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))

{
se (OrderProfit()>0)
{
lotto=1;
}
se (OrderProfit()<=0)
{
lot=OrderLots()*koeff; // Moltiplicare per 2
}

}


int h=TimeHour(TimeCurrent());
int m=TimeMinute(TimeCurrent());
int s=TimeSeconds(TimeCurrent());
double zena0=Open[3];
double zena01=Open[2];


if (h==1 && m==00 && s==01 && zena0<zena01 )

{OrderSend(Symbol(), OP_BUY,lot,Ask,3,Bid-sl*Point,Ask+tp*Point,"",0,0, Green);}





if (h==1 && m==00 && s==01 && zena0>zena01)
{OrderSend(Symbol(), OP_SELL,lot,Bid,3,Ask+sl*Point,Bid-tp*Point,"",0,0,Red);}
}


{if(OrdersHistoryTotal()==0)
{lot=1;}

if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))

{
se (OrderProfit()>0)
{
lotto=1;
}
se (OrderProfit()<=0)
{
lot=OrderLots()*koeff; // Moltiplicare per 2 dopo un trade perdente
}

}




double zena1=Open[5];
double zena11=Open[4];

if (h==3 && m==00 && s==01 && zena1>zena11)
{



OrderSend(Symbol(), OP_BUY,lot,Ask,3,Bid-sl*Point,Ask+tp*Point,"",0,0,Green);}
if (h==14 && m==00 && s==01 && zena1<zena11)
{OrderSend(Symbol(), OP_SELL,lot,Bid,3,Ask+sl*Point,Bid-tp*Point,"",0,0,Red);}

}
}

ritorno(0);
}

//+------------------------------------------------------------------+
 

Potete dirmi come tradurre un carattere (stringa) in codice ASCII?

In parole povere, avete bisogno dell'inverso di CharToStr().

 
Heroix:

Potete dirmi come tradurre un carattere (stringa) in codice ASCII?

In parole povere, avete bisogno dell'inverso di CharToStr().


 

Buon pomeriggio.

aiutami ad avere bisogno di un codice

grafico attuale

Quando si apre una nuova barra, deve essere aperto un ordine

Esattamente il nuovo bar

 
sannin:

Buon pomeriggio.

aiutami ad avere bisogno di un codice

grafico attuale

Quando si apre una nuova barra, deve essere aperto un ordine

Esattamente il nuovo bar

Nessun problema!

Iniziate a scrivere il codice di cui avete bisogno. In caso di difficoltà, fate domande e mostrate pezzi del codice che avete scritto, e i compagni esperti vi mostreranno dove avete sbagliato.

 

Ciao a tutti.

Ho una domanda. Nel tester, la settimana inizia alle 00:00 se guardiamo il grafico delle ore, per esempio. Si sa che la settimana forex inizia alle 20:15 GMT. Cioè, per ottenere da un'ora nel tester ora GMT, grosso modo, prebovlyayut 20 ore e dividere modulo per 24, giusto?

 
perché esattamente alle 20.15, per voi si aprirà come apre il vostro broker
 
Buona giornata a tutti. Si prega di consigliare dove ottenere informazioni su come chiudere l'EA da occhi indiscreti e ciò che è necessario in modo che l'EA funziona per un certo periodo di tempo e poi cessa di essere utile al momento, beh, per esempio, per introdurre un codice per la continuazione del lavoro, come quello. Grazie in anticipo!!!
Motivazione: