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

 
kalmyk87:

Ciao, non riesco ad autorizzare mql5 in metatrader4 per sottoscrivere i segnali...cosa fare!


Scrivi una richiesta a servicedesk (nel profilo a sinistra), con dettagli e screenshot.

 

I gufi dovrebbero arare su diverse coppie e preferibilmente due gufi per tabella d'acquisto separatamente dai sé.

Così com'è, si apre all'infinito


int _OrdersTotal=OrdersTotal();

for (int i=_OrdersTotal-1; i>=0; i--) {

se (OrderSelect(i,SELECT_BY_POS)) {

if (OrderMagicNumber() == Magic) {

se (OrderSymbol() == Symbol()) {

se (OrderType() == OP_BUY) {

}}}}}

se(MaPrevious>MaPrevious1)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point ,Ask+TakeProfit*Point, "macd sample",Magic,0,Green);

se(biglietto>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("Ordine BUY aperto: ",OrderOpenPrice());

}

else

Print("Error opening BUY order : ",GetLastError());

ritorno;

}

 

aiutare chi può

 

Buon pomeriggio a tutti!

So che è possibile implementare l'uscita del segnale nell'indicatore:

a) Quando appare sulla barra corrente senza aspettare che si chiuda. In questo caso, dopo la chiusura della barra il segnale può essere cancellato;

b) Dopo la chiusura della barra su cui appare il segnale.

Sono interessato alla variante a). Come implementare l'allarme in un indicatore, senza aspettare la chiusura della barra?

Ho cercato di implementarlo come scelta di parametri nella linea 39 del codice dell'indicatore, ma non ha funzionato. Come farlo correttamente?


extern int shift = 0; // su quale barra viene considerato il segnale: 0 - sulla barra corrente; 1 - sulla barra chiusa


Sarei molto grato per l'aiuto!

File:
 
Tornado:

Buon pomeriggio a tutti!

So che è possibile implementare l'uscita del segnale nell'indicatore:

a) Quando appare sulla barra corrente senza aspettare che si chiuda. In questo caso, dopo la chiusura della barra il segnale può essere cancellato;

b) Dopo la chiusura della barra su cui appare il segnale.

Sono interessato alla variante a). Come implementare l'allarme in un indicatore, senza aspettare la chiusura della barra?

Ho cercato di implementarlo come scelta di parametri nella linea 39 del codice dell'indicatore, ma non ha funzionato. Come farlo correttamente?


extern int shift = 0; // su quale barra viene considerato il segnale: 0 - sulla barra corrente; 1 - sulla barra chiusa


Vi sarei molto grato per il vostro aiuto!


L'ho ottenuto approssimativamente così

//+---------------------------------------------------------------------------------+
//+ MA2_Signal                                                                      +
//+ Индикатор сигналов при пересечении 2-х средних                                  +
//+                                                                                 +
//+ Внешние параметры:                                                              +
//+  ExtPeriodFastMA - период быстой средней                                        +
//+  ExtPeriodSlowMA - период медленной средней                                     +
//+  ExtModeFastMA   - режим быстой средней                                         +
//+  ExtModeSlowMA   - режим медленной средней                                      +
//+   Режимы: 0 = SMA, 1 = EMA, 2 = SMMA (сглаженная), 3 = LWMA (взвешенная)        +
//+  ExtPriceFastMA  - цена быстрой средней                                          +
//+  ExtPriceSlowMA  - цена медленной средней                                       +
//+   Цены: 0 = Close, 1 = Open, 2 = High, 3 = Low, 4 = HL/2, 5 = HLC/3, 6 = HLCC/4 +
//+---------------------------------------------------------------------------------+
#property copyright "Copyright © 2015, Karakurt (mod. GromoZeka 2017)"
#property link      ""

//---- Определение индикаторов
#property indicator_chart_window
#property indicator_buffers 4
//---- Цвета
#property  indicator_color1 Red // 5
#property  indicator_color2 Green        // 7
#property  indicator_color3 DeepSkyBlue
#property  indicator_color4 Magenta
#property  indicator_width1 2
#property  indicator_width2 2
#property  indicator_width3 2
#property  indicator_width4 2


//---- Параметры
extern int    ExtPeriodFastMA = 8;
extern int    ExtPeriodSlowMA = 20;
extern int    ExtModeFastMA   = 1; // 0 = SMA, 1 = EMA, 2 = SMMA, 3 = LWMA
extern int    ExtModeSlowMA   = 1; // 0 = SMA, 1 = EMA, 2 = SMMA, 3 = LWMA
extern int    ExtPriceFastMA  = 0; // 0 = Close, 1 = Open, 2 = High, 3 = Low, 4 = HL/2, 5 = HLC/3, 6 = HLCC/4
extern int    ExtPriceSlowMA  = 0; // 0 = Close, 1 = Open, 2 = High, 3 = Low, 4 = HL/2, 5 = HLC/3, 6 = HLCC/4
extern int shift=0;      // На каком баре считать сигнал: 0 - на текущем; 1 - на закрытом
extern bool   EnableAlert=true;
extern bool   EnableSendNotification=false;
extern bool   EnableSendMail  =  false;
extern bool   EnableSound     = false;
extern string ExtSoundFileNameUp = "Покупаем.wav";
extern string ExtSoundFileNameDn = "Продаем.wav";

//---- Буферы
double FastMA[];
double SlowMA[];
double CrossUp[];
double CrossDown[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- Установка параметров прорисовки
//     Средние
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE);
//     Сигналы
   SetIndexStyle(2,DRAW_ARROW,EMPTY);
   SetIndexArrow(2,233);
   SetIndexStyle(3,DRAW_ARROW,EMPTY);
   SetIndexArrow(3,234);

//---- Задание буферов
   SetIndexBuffer(0,FastMA);
   SetIndexBuffer(1,SlowMA);
   SetIndexBuffer(2,CrossUp);
   SetIndexBuffer(3,CrossDown);

   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));

//---- Название и метки
   IndicatorShortName("MA2_SignalV2("+ExtPeriodFastMA+","+ExtPeriodSlowMA);
   SetIndexLabel(0,"MA("+ExtPeriodFastMA+","+ExtPeriodSlowMA+")"+ExtPeriodFastMA);
   SetIndexLabel(1,"MA("+ExtPeriodFastMA+","+ExtPeriodSlowMA+")"+ExtPeriodSlowMA);
   SetIndexLabel(2,"Buy");
   SetIndexLabel(3,"Sell");

   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   double AvgRange;
   int    iLimit;
   int    i;
   int    counted_bars=IndicatorCounted();

//---- check for possible errors
   if(counted_bars<0)
      return ( -1 );

//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;

   iLimit=Bars-counted_bars;

   for(i=iLimit; i>=0; i--)
     {
      FastMA[i] = iMA( NULL, 0, ExtPeriodFastMA, 0, ExtModeFastMA, ExtPriceFastMA, i );
      SlowMA[i] = iMA( NULL, 0, ExtPeriodSlowMA, 0, ExtModeSlowMA, ExtPriceSlowMA, i );
      AvgRange=(iMA(NULL,0,10,0,MODE_SMA,PRICE_HIGH,i)-iMA(NULL,0,10,0,MODE_SMA,PRICE_LOW,i))*0.1;
      CrossDown[i+1]=EMPTY_VALUE;
      CrossUp[i+1]=EMPTY_VALUE;

      if((FastMA[i+1]>=SlowMA[i+1]) && (FastMA[i+2]<=SlowMA[i+2]) && (FastMA[i]>SlowMA[i])) // пересечение вверх
        {//
         CrossUp[i+1]=SlowMA[i+1]-Range*0.75;
        }

      if((FastMA[i+1]<=SlowMA[i+1]) && (FastMA[i+2]>=SlowMA[i+2]) && (FastMA[i]<SlowMA[i])) // пересечение вниз
        {//
         CrossDown[i+1]=SlowMA[i+1]+Range*0.75;
        }
     }
   static datetime TimeAlert=0;
   if(TimeAlert!=Time[0])
     {
      TimeAlert=Time[0];
      if(CrossUp[shift]!=EMPTY_VALUE)
        {
         if(EnableAlert) Alert("MA 8-20 ",Symbol()," ",Period(),"M - BUY "); // звуковой сигнал
         if(EnableSound) PlaySound(ExtSoundFileNameUp);
         if(EnableSendNotification) SendNotification("MA 8-20 EUR_H1 - BUY"); // push-уведомление
         if(EnableSendMail) SendMail("MA 8-20: ",Symbol()+" , "+Period()+" мин.-  BUY!"); // email-уведомление
        }
      if(CrossDown[shift]!=EMPTY_VALUE)
        {
         if(EnableAlert) Alert("MA 8-20 ",Symbol()," ",Period(),"M - SELL "); // звуковой сигнал
         if(EnableSound) PlaySound(ExtSoundFileNameDn);
         if(EnableSendNotification) SendNotification("MA 8-20 EUR_H1 - SELL"); // push-уведомление
         if(EnableSendMail) SendMail("MA 8-20: ",Symbol()+" , "+Period()+" мин.- SELL!"); // email-уведомление
        }
     }
   return (0);
  }
//+------------------------------------------------------------------+

Ho rimosso alcune cose inutili. Ho semplificato alcune cose

 
Victor Nikolaev:

Questo è più o meno quello che ho ottenuto.

Ho rimosso alcune cose inutili. Semplificato alcune cose.


Grazie mille! Farò un tentativo.

 
Victor Nikolaev:

Questo è più o meno quello che ho ottenuto.

Ho rimosso alcune cose inutili. Semplificato alcune cose.


È spiacevole, ma non funziona. L'ho provato su M5 timeframe per controllarlo più velocemente. Il segnale è apparso solo quando la barra è stata chiusa e non quando le medie sono state incrociate sulla barra corrente. Test su telai di grandi dimensioni.

 
//+------------------------------------------------------------------+
class A
  {
public: int       propA;
public:
                     A(void) {propA = 15;};
                    ~A(void) {};
  };
//+------------------------------------------------------------------+
class B: public A
  {
public:
                     B(void){};
                    ~B(void){};
  };
//+------------------------------------------------------------------+
void OnStart()
  {
   B newObj;
   GetA(newObj);
//---
   //B newObjArray[3];
   //GetA_Array(newObjArray);
  }
//+------------------------------------------------------------------+
void GetA(A &obj)
  {
   Print(obj.propA);
  }
//+------------------------------------------------------------------+
void GetA_Array(A &obj[])
  {
   for(int i=0;i<ArraySize(obj);i++)
      Print(obj[i].propA);
  }
//+------------------------------------------------------------------+

Se decommentiamo le linee rimanenti in OnStart() otteniamo "newObjArray - parameter conversion not allowed".

Due domande: perché e come risolvere il problema?

 
Tornado:

È spiacevole, ma non funziona. Provato su M5 timeframe per controllare più velocemente. Il segnale è apparso solo dopo la chiusura della barra e non quando le medie sono state incrociate sulla barra corrente. L'ho testato su grandi timeframe.


Sembra che non ci capiamo.

 

Ciao amici.

Come fare in modo che i valori di stop loss, tekprofit e trailing siano visualizzati in percentuale invece che in pip.

Questa formula è troppo ingombrante e non funziona affatto

StopLoss=NormalizeDouble(Bid-(Bid-TrailingStop)/100*TRAL_PERCENT,Digits);

Vorrei avere la forma più semplice di percentuale.

Doppio Stoploss = 0,05;

--------

Profit=Bid-Stoploss in percentuale (è un esempio disordinato, ma solo per chiarezza)

Grazie.