Hilfe bei der Codierung - Seite 777

 
Algo_W:

Ich bin nicht sicher, wie man IMaOnArray für diese zu implementieren. Ich denke, das ist die Lösung? Kann mir jemand helfen, den gleitenden Durchschnitt des ADX für das Histogramm zu ermitteln?

Ich danke Ihnen

#property indicator_type1 DRAW_LINE

#property indicator_type1 DRAW_LINE
for(int i = limit-1; i >= 0; i--)
   Buffer1[i] = iADX(NULL, PERIOD_CURRENT, 14, PRICE_CLOSE, MODE_MAIN, i);
   
for(i = limit-1; i >= 0; i--)   
   Buffer2[i] = iMAOnArray(Buffer1, 0, 5, 0, MODE_SMA, i);
 
Naguisa Unada:

Hallo Naguisa!

Ich hoffe, es geht dir gut?

Ich möchte mich bei dir bedanken, dass du den mtf BB-Indikator verbessert hast. Ich kann dir sagen, dass er wunderbar funktioniert.


Naguisa! Nur um weiter zu erkundigen, wenn ich darf, kann dieser Indikator tweekable sein, so dass man verschiedene benutzerdefinierte Zeitrahmen sagen, wie Fibonacci-Zahlen oder jede ungerade und gerade Zeitrahmen und nicht unbedingt die für MT4 nur sehen kann. ist das möglich, freundlich?

 

Bitte um Hilfe bei der Codierung.

wie kann ı code

einen rechten Strahl zu einem Endpunkt?

 
guner:

Bitte um Hilfe bei der Codierung.

wie kann ı code

ad right ray to a ma end point.?

Zeichnen Sie ein Trendobjekt mit den Werten PRICE1 und PRICE2, die dem Wert des von Ihnen gewählten MA auf Takt 0 entsprechen, und TIME1, der dem Zeitpunkt von Takt 0 entspricht, während TIME2 irgendwo in der Zukunft liegt. Berechnen Siebeijedem Tick den MA neu und setzen Sie PRICE1 und PRICE2 entsprechend, und setzen Sie bei jedem neuen Takt eine neue TIME1.

 

Hallo zusammen,


Ich studiere das Buch "Volatility illuminated" von Mark Whistler und bin daran interessiert, die von ihm erstellten Indikatoren zu vertiefen, insbesondere den WAVE-PM
Whistler hat den mq4 Code im Buch veröffentlicht und es gibt auch eine Kopie hier http://fxcodebase.com/code/viewtopic.php?f=38&t=64011

Allerdings ist meine Absicht, den Indikator auf Tradingview zu portieren, da dies meine Haupt-Charting-Plattform ist. Ich kenne einige Pinescript-Grundlagen, aber ich finde es wirklich schwer, in den C-ähnlichen Code des Original-Skripts zu lesen
Kann jemand einen Blick auf den Code werfen und mir grob die Logik erklären, was er tut?

In dem Buch von Whistler steht nicht viel über den Indikator, nur dass er " die 'Kompression' der kurzfristigen Verteilung innerhalb der größeren Verteilung visuell identifiziert".



Soweit ich verstanden habe, stellt der Oszillator die Differenz zwischen dem oberen und dem unteren Band eines Bollinger Bandes dar, dann wird der Wert in einem Bereich von 0-1 normalisiert und entlang der Zeit aufgetragen

Im Code sehe ich, dass zwei Oszillatoren erstellt werden (ShortBandsPeriod und LongBandsPeriod), aber dann verliere ich mich in den for-Zyklen... Ich kann nur sehen, dass es einige mathematische Berechnungen gibt (ein Quadrat, eineExponenten-Potenz und ein Tangens?), aber unglücklicherweise kann ich nicht begreifen, warum und wie sie gemacht werden

.
.
.
for (i=limit; i>=0; i--){
   
             
                avg= iMA(NULL,0,ShortBandsPeriod,0,MODE_SMA,PRICE_CLOSE,i+ShortBandsShift);
                
                sum=0;
                
                for (j=ShortBandsPeriod-1; j>=0; j--){
                 temp = Close[i+j] - avg;
                 sum = sum + temp * temp;
                }
         
                ShortDev[i]= ShortBandsDeviations * MathSqrt(sum / ShortBandsPeriod);
        ShortDev1[i] = MathPow((ShortDev[i] / Point), 2);
                
                
                    //if  ( i < limit - Chars)
                        //{
         
                        
                          temp=0;
                                for (j=Chars-1; j>=0; j--){                             
                                 temp = temp + ShortDev1[i+j];
                                }
                        
            temp = MathSqrt(temp / Chars) * Point;
            if (temp != 0)
                        {
                temp = ShortDev[i] / temp;
            }

                                
         
                        ShortOscillator[i] = MathTanh(temp);
                                
                   //}
   }
.
.
.


Ich bin für jede Hilfe, Anregung oder jeden Hinweis dankbar, danke!

Dateien:
WAVE-PM.mq4  5 kb
 

Hi, Leute, könnten einige Coder helfen, diesen Fisher-Indikator zu modifizieren.

Ja, es ist ein sehr alter Indikator und repaint,jedoch es hat einige wertvolle Informationen. Ich möchte den Zustand des Indikators zu analysieren, wenn jede Kerze closed.i'll geschätzt werden.

Wir ändern nicht die repaint Funktion, fügen Sie einfach auto-refresh.Make der Indikator aktualisieren und den Zustand aufzeichnen, wenn jede Kerze geschlossen, aber nicht aktualisieren sich während der nächsten Kerze beginnt.

sorry für mein schlechtes Englisch.danke im Voraus.

Dateien:
fisher1.mq4  3 kb
 

Hallo Leute!

Ich hoffe, es geht euch allen gut?

Ich fand diese Indikatoren in der dynamischen Zone Forum, aber es nicht als solche arbeiten und wenn jeder großzügige Coder kann sie zu beheben, würde ich sehr schätzen sie.

Ich hänge sie hier an,

Meine aufrichtige Wertschätzung im Voraus.

 
Mkurugenzi:

Hallo Leute!

Ich hoffe, es geht euch allen gut?

Ich fand diese Indikatoren in der dynamischen Zone Forum, aber es nicht als solche arbeiten und wenn jeder großzügige Coder kann sie zu beheben, würde ich sehr schätzen sie.

Ich hänge sie hier an,

Meine aufrichtige Wertschätzung im Voraus.

@Naguisa Unada


Ich hoffe, es geht Ihnen gut?


Sind Sie bitte in der Lage, sich meinen letzten Beitrag oben anzusehen und zu sehen, ob Sie in der Lage sind, zumindest einige, wenn nicht sogar alle Indikatoren zu retuschieren, damit sie funktionieren?


Ich weiß Ihre Mühe, Zeit und Ressourcen im Voraus zu schätzen.

 

Hallo Programmierer! Kann mir jemand helfen, diesen EA zu modifizieren?

Dies ist ein einfacher Buy Low Sell High EA, der alle x Minuten Limit-Orders ausgibt, die x Minuten/Stunden dauern.


Was ich denke, würde es zu verbessern ist, um einen Filter zu ihm hinzufügen. Sagen wir Stochastik oder RSI..

Wenn also die Stochastik niedriger als 40 ist, werden die Kauflimits ausgelöst.

Und wenn die Stochastik höher als 60 ist = die Verkaufslimits auslösen

Und dazwischen startet er nichts



Ist dies möglich? Vielen Dank im Voraus.

Ich hänge den EA an


Ich habe den EA "manuell" verwendet, indem ich entschieden habe, ihn auf der Long- oder Short-Seite mit guten Ergebnissen laufen zu lassen.

Dateien:
WIDE_HARD.mq4  8 kb
EA-FXblue.png  68 kb
 
Hallo. Ich entschuldige mich sofort für mein schlechtes Englisch. Wenn es nicht schwierig ist, helfen Sie bitte mit dem Advisor-Code. Nämlich, um die Bedingungen der Eröffnung und Schließung von Positionen zu korrigieren. Ein wenig über den Roboter, der Roboter öffnet und schließt Positionen an der Wende des Zickzack-Indikators.
Dieses System soll unabhängig davon funktionieren, ob es einen Zickzack-Indikator in MT4 gibt oder nicht.
//+------------------------------------------------------------------+
//|                                       Test advisor on ZigZag.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                         https:/goga342@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright c 2010, MQL для тебя."
#property link "http://mql4you.ru"
#property strict
extern double lots = 0.01; //
extern int  TakeProfit=60; //
extern int  StopLoss=100; //
extern int Magic=111111111;
extern int Slippage=3;
extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;

datetime Today=0;
double SL,TP;
int ticket;
//±-----------------------------------------------------------------+
int OnInit()
  {
   if(Digits==3 || Digits==5)
     {
      TakeProfit *=10;
      StopLoss   *=10;
      Slippage   *=10;
     }
   return(INIT_SUCCEEDED);
  }
//±-----------------------------------------------------------------+
int deinit() {return(0);}
//±-----------------------------------------------------------------+
int start()
  {

   if(DayOfWeek()==0 || DayOfWeek()==6) return(0); // в выходные не работаем
   if(!IsTradeAllowed()) return(0); // пропустим тик если терминал занят
                                    //:проверим открытие новой свечи
   if(Time[0]==Today) return(0);
   Today=Time[0];
//:получим значение ZigZag на предыдущей свече
   double lZZ=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,1);
   double lZZ_=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,0);
// открытие продаж

   if(CountSell()==0 && lZZ==Low[0] && lZZ_==Low[0])
     {
      SL = NormalizeDouble(Bid+StopLoss*Point, Digits);
      TP = NormalizeDouble(Bid-TakeProfit*Point, Digits);
        {

         ticket=OrderSend(Symbol(),OP_SELL,lots,Bid,Slippage,SL,TP,"macd sample",Magic,0,Red);
         if(ticket>0)
           {
            // закрытие продаж
    //        if(CountSell()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
              {
               for(int i=OrdersTotal()-1; i>=0; i--)
                 {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                    {
                     if(OrderMagicNumber()==Magic && OrderType()==OP_SELL)
                        if(OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,clrNONE))
                           Print("Ошибка открытия ордера на покупку !");
                    }
                 }
              }
           }
        }
     }
// открытие покупок

 //  if(CountBuy()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
     {
      TP = NormalizeDouble(Ask+TakeProfit*Point, Digits);
      SL = NormalizeDouble(Ask-StopLoss*Point, Digits);
        {
         ticket=OrderSend(Symbol(),OP_BUY,lots,Ask,Slippage,SL,TP,"macd sample",Magic,0,Green);
         if(ticket>0)
           {
            // закрытие покупок    
       //     if(CountBuy()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])
              {
               for(int i=OrdersTotal()-1; i>=0; i--)
                 {
                  if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                    {
                     if(OrderMagicNumber()==Magic && OrderType()==OP_BUY)
                        if(!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,clrNONE))
                           Print("Ошибка открытия ордера на продажу!");
                    }
                 }
              }
           }
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
int CountSell()//проверкна открытие ордеров на продажу
  {
   int count=0;

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_SELL)
           {
            if(OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
int CountBuy()// проверкна открытие ордеров на покупку
  {
   int count=0;

   for(int trade=OrdersTotal()-1; trade>=0; trade--)
     {
      if(OrderSelect(trade,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
           {
            if(OrderType()==OP_BUY)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+

Verkaufseröffnung

if(CountSell()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])

Schlussverkauf

      if(CountSell()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
              

Eröffnungskauf

if(CountBuy()==0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,0,1)==High[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,0,1)==High[0])
     

Schlussverkauf

 if(CountBuy()>0 && iCustom(NULL,0,"ZigZag_Rosh",12,5,3,1,0)==Low[0] && iCustom(NULL,0,"ZigZag_Rosh",48,20,12,1,0)==Low[0])