Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1153

 
kalmyk87:

Hallo! Ich kann mql5 in metatrader4 nicht autorisieren, um Signale zu abonnieren...was zu tun ist!


Schreiben Sie eine Anfrage an servicedesk (im Profil auf der linken Seite), mit Details und Bildschirmfotos.

 

Die Eulen sollten auf mehreren Paaren und vorzugsweise zwei Eulen pro Kaufkarte getrennt von den Eulen selbst pflügen.

So wie es ist, öffnet es sich ins Unendliche


int _OrdersTotal=OrdersTotal();

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

if (OrderSelect(i,SELECT_BY_POS)) {

if (OrderMagicNumber() == Magic) {

if (OrderSymbol() == Symbol()) {

if (Auftragsart() == OP_BUY) {

}}}}}

if(MaPrevious>MaPrevious1)

{

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

if(Ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))

Print("BUY order opened : ",OrderOpenPrice());

}

sonst

Print("Fehler beim Öffnen der BUY-Bestellung: ",GetLastError());

Rückkehr;

}

 

helfen, wer kann

 

Guten Tag zusammen!

Ich weiß, dass es möglich ist, die Signalausgabe im Indikator zu implementieren:

a) Wenn er auf dem aktuellen Balken erscheint, ohne dass dieser geschlossen wird. In diesem Fall kann das Signal nach dem Schließen des Balkens wieder aufgehoben werden;

b) Nach dem Schluss des Balkens, auf dem das Signal erscheint.

Ich interessiere mich für Variante a). Wie kann man den Alarm in einem Indikator implementieren, ohne auf das Schließen des Balkens zu warten?

Ich habe versucht, es als Parameterauswahl in Zeile 39 des Indikatorcodes zu implementieren, aber es hat nicht funktioniert. Wie macht man es richtig?


extern int shift = 0; // auf welchem Balken das Signal berücksichtigt wird: 0 - auf dem aktuellen Balken; 1 - auf dem geschlossenen Balken


Für Hilfe wäre ich sehr dankbar!

Dateien:
 
Tornado:

Guten Tag zusammen!

Ich weiß, dass es möglich ist, die Signalausgabe im Indikator zu implementieren:

a) Wenn er auf dem aktuellen Balken erscheint, ohne dass dieser geschlossen wird. In diesem Fall kann das Signal nach dem Schließen des Balkens zurückgenommen werden;

b) Nach dem Schluss des Balkens, auf dem das Signal erscheint.

Ich interessiere mich für Variante a). Wie kann man den Alarm in einem Indikator implementieren, ohne auf den Abschluss des Balkens zu warten?

Ich habe versucht, es als Parameterauswahl in Zeile 39 des Indikatorcodes zu implementieren, aber es hat nicht funktioniert. Wie macht man es richtig?


extern int shift = 0; // auf welchem Balken das Signal berücksichtigt wird: 0 - auf dem aktuellen Balken; 1 - auf dem geschlossenen Balken


Für Ihre Hilfe wäre ich Ihnen sehr dankbar!


Ich habe es ungefähr so

//+---------------------------------------------------------------------------------+
//+ 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);
  }
//+------------------------------------------------------------------+

Ich habe einige unnötige Dinge entfernt. Ich habe einige Dinge vereinfacht

 
Victor Nikolaev:

Das ist mehr oder weniger das, was ich bekommen habe.

Ich habe einige unnötige Dinge entfernt. Einige Dinge wurden vereinfacht.


Ich danke Ihnen vielmals. Ich werde es ausprobieren.

 
Victor Nikolaev:

Das ist mehr oder weniger das, was ich bekommen habe.

Ich habe einige unnötige Dinge entfernt. Einige Dinge wurden vereinfacht.


Es ist bedauerlich, aber es funktioniert nicht. Ich habe es im Zeitrahmen M5 ausprobiert, um es schneller zu überprüfen. Das Signal erschien nur, wenn der Balken geschlossen wurde und nicht, wenn die Durchschnitte auf dem aktuellen Balken gekreuzt wurden. Prüfung an großen Rahmen.

 
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+

Wenn wir die restlichen Zeilen in OnStart() auskommentieren, erhalten wir "newObjArray - parameter conversion not allowed".

Zwei Fragen: Warum, und wie kann man das Problem lösen?

 
Tornado:

Es ist bedauerlich, aber es funktioniert nicht. Ich habe es mit dem Zeitrahmen M5 versucht, um schneller zu prüfen. Das Signal erschien erst, nachdem der Balken geschlossen wurde, und nicht, wenn sich die Durchschnitte auf dem aktuellen Balken kreuzten. Ich habe es auf großen Zeitskalen getestet.


Es sieht so aus, als würden wir uns einfach nicht verstehen.

 

Hallo Freunde.

Wie man Stop Loss, Tekprofit und Trailing-Werte als Prozentsatz anstelle von Pips anzeigen lässt.

Diese Formel ist zu unübersichtlich und funktioniert überhaupt nicht

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

Ich möchte die einfachste Form des Prozentsatzes haben.

Doppelter Stoploss = 0,05;

--------

Gewinn=Gebot-Stop-Verlust in Prozent (es ist ein unschönes Beispiel, aber nur zur Verdeutlichung)

Ich danke Ihnen.