[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 611

 

Helfen Sie mir, einen einfachen Indikator zu schreiben, der im Hauptfenster Linien von Höchst- und Tiefstwerten für den gewünschten Zeitraum (der mit einer externen Variablen festgelegt wird) zeichnet.

 

Bitte sagen Sie mir, wo ich einen 15-Tage-Wochentagsplaner finden kann.

Bitte geben Sie mir einen Link, eine Datei oder einen Namen.

Und wie immer danke ich Ihnen für Ihre Zeit.

 
41ckm39fi:

Guten Abend.

Könnten Sie mir bitte sagen, was der Fehler ist, gibt der Indikator nicht eine Nachricht über die Kreuzung von zwei MAs.


Haben Sie sorgfältig nachgedacht, bevor Sie diesen Indikator geschrieben haben?

Bitte beschreiben Sie die Logik, zumindest für sich selbst.

#property indicator_chart_window

extern int        Period_MA_fast         = 5,
                  Period_MA_med          = 8,
                  Period_MA_slow         = 16,
                  period_DeMarker       = 14;
//---- 
double            DeMarker_buffer0[],
                  Speed_MA_fast[],
                  Speed_MA_med[],
                  Speed_MA_slow[];      

#define SIGNAL_BAR 1
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   //---- indicators
   IndicatorBuffers(4);
   SetIndexBuffer(0,DeMarker_buffer0);
   SetIndexBuffer(1,Speed_MA_fast);
   SetIndexBuffer(2,Speed_MA_med);
   SetIndexBuffer(3,Speed_MA_slow);
   SetIndexStyle(0,DRAW_NONE);
   SetIndexStyle(1,DRAW_NONE);
   SetIndexStyle(2,DRAW_NONE);
   SetIndexStyle(3,DRAW_NONE);
   //----
   return(0);
  }

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {
   int    counted_bars=IndicatorCounted();
   int    i,limit;
   
   if(counted_bars>0) counted_bars--;
      limit=Bars-counted_bars;
   //----
   for(i=limit; i>=0; i--) {
      DeMarker_buffer0[i]=iDeMarker(NULL,0,14,i);
      Speed_MA_med[i]=iMA(NULL,0,Period_MA_med,0,MODE_LWMA,PRICE_CLOSE,i);
      Speed_MA_slow[i]=iMA(NULL,0,Period_MA_slow,0,MODE_LWMA,PRICE_CLOSE,i);
   }
   
   for(i=limit; i>=0; i--)
      Speed_MA_fast[i]=iMAOnArray(DeMarker_buffer0,0,5,0,MODE_LWMA,i);
   
   static int PrevTime = 0;

   if(PrevTime >= Time[0] ) return(0);
   PrevTime = Time[0];

   if(Speed_MA_fast[SIGNAL_BAR] - 0.3 > 0)
      if (0.3 - Speed_MA_fast[SIGNAL_BAR+1] >= 0)
         Alert( "sMA(", Symbol(), ", ", Period(), ")  -  BUY!!!" );

   if(0.7 - Speed_MA_fast[SIGNAL_BAR] > 0)
      if (Speed_MA_fast[SIGNAL_BAR+1] - 0.7 >= 0)
         Alert("sMA(", Symbol(), ", ", Period(), ")  -  SELL!!!");

   if(Speed_MA_med[SIGNAL_BAR] - Speed_MA_slow[SIGNAL_BAR] > 0)
      if (Speed_MA_med[SIGNAL_BAR+1] - Speed_MA_slow[SIGNAL_BAR+1] >= 0)  
         Alert( "speedMA(", Symbol(), ", ", Period(), ")  -  BUY!!!" );   

   if(Speed_MA_slow[SIGNAL_BAR] - Speed_MA_med[SIGNAL_BAR] > 0)
      if (Speed_MA_slow[SIGNAL_BAR+1] - Speed_MA_med[SIGNAL_BAR+1] >= 0)  
         Alert( "speedMA(", Symbol(), ", ", Period(), ")  -  SELL!!!" );     
  
  
   return(0);
}
//+------------------------------------------------------------------+
Es könnte funktionieren, ich habe es nicht getestet.
 

Danke an alle, es gibt noch eine weitere Frage: .........

Ich habe einen EA mit Ein- und Ausstiegsbedingungen basierend auf bestimmten Signalen(egal was)

d.h. drei Bildschirme - ein Indikator, z.B. Force oder Stohostick

Ausstiegsbedingungen auch nur durch sie -

alles in Ordnung ist, aber ein zusätzlicher Stop Loss erforderlich ist, um die Positionen zu schützen

d.h. =10p.

................. kann ich diesen EA ohne zusätzliche Verluste verwenden, zumindest

kann es möglich sein, einen solchen Expert Advisor ohne zusätzliche Verluste zu verwenden, zumindest bei kleinen Lots=0,01, da das Ausstiegssignal ohnehin

P.S. Ich dachte an E-Mail oder ICQ - habe soeben eine MT-Nachricht an Sie geöffnet.

und Sie überlegen, wo Sie am besten anhalten sollten.

....... sagen Sie nicht nein, wenn man Sie fragt.

 
KlugerX35:

Danke an alle, es gibt noch eine weitere Frage: .........

Ich habe einen EA mit Ein- und Ausstiegsbedingungen basierend auf bestimmten Signalen(egal was)

d.h. drei Bildschirme - ein Indikator, z.B. Force oder Stohostick

Ausstiegsbedingungen auch nur durch sie -

alles in Ordnung ist, aber ein zusätzlicher Stop Loss erforderlich ist, um die Positionen zu schützen

d.h. =10p.

................. kann ich diesen EA ohne zusätzliche Verluste verwenden, zumindest

kann es möglich sein, einen solchen Expert Advisor ohne zusätzliche Verluste zu verwenden, zumindest bei kleinen Lots=0,01, da das Ausstiegssignal ohnehin

P.S. Ich dachte an E-Mail oder ICQ - habe soeben eine MT-Nachricht an Sie geöffnet.

und Sie überlegen, wo Sie am besten anhalten sollten.

....... sagen Sie nicht nein, wenn man Sie fragt.


Wenn der Expert Advisor einen "technischen" Ausstieg hat, braucht er keinen Stop, wenn Sie aber einen Stop für den Fall der Fälle, als Versicherung, setzen wollen, dann setzen Sie einen größeren.

10 Pence sind ein echter Verlust.

Für welchen Zeitraum ist sie so klein, für eine Minute? Natürlich geht das schief, und selbst potenziell gewinnbringende Geschäfte werden zerhackt.

Ist es möglich, einen solchen Expert Advisor ohne zusätzliche LOS zu verwenden, zumindest

Verwenden Sie nur ein kleines Los=0,01

Wenn es stabil arbeitet, Fehler normal behandelt und Sie mit den Handelsergebnissen zufrieden sind, dann können Sie es tun.
 

Dies ist eine Frage - kann mir das bitte jemand erklären.

Warum heißt es, dass der Abschluss durch einen Gegenauftrag einen Aufschlag spart? Schließlich wird das erste Geschäft, z.B. Buy, zum Ask-Preis gekauft und zum Bid-Preis verkauft (es gibt keinen Gewinn in der Gesamtpositionsgröße), und das zweite Geschäft - Sell - wird zum Bid-Preis eröffnet, und dementsprechend wird die Positionslänge auf der Grundlage des Schlusskurses für Ask berechnet.

Das Handbuch gibt einige unklare Beispiele https://book.mql4.com/ru/trading/orderclose, bei denen der Unterschied nicht in der Spanne liegt, wie angegeben, sondern in der Größe des zweiten Geschäfts - bei einem 2-für-15-Abschluss eines Geschäfts und dem gegenüberliegenden - nur 15, d.h. alle Verluste des Geschäfts verschwinden, aber nicht die Spanne.

Wo ist also der Haken an der Sache?

 
FatyM:

Bitte sagen Sie mir, wo ich einen 15-Tage-Wochentagsplaner finden kann.

Bitte geben Sie mir einen Link, eine Datei oder einen Namen.

Und wie immer danke ich Ihnen für Ihre Zeit.

Dateien:
 
Vinin:


Haben Sie sorgfältig nachgedacht, bevor Sie diesen Indikator geschrieben haben?

Schreiben Sie die Logik auf, zumindest für sich selbst.

Vielleicht funktioniert es ja, ich habe es nicht überprüft

Ich habe die Logik des muwings-Vergleichs umgeschrieben, aber immer noch keine Meldungen, ich kann nicht herausfinden, was der Fehler ist.
#property indicator_chart_window
#property  indicator_level1 0.3
#property  indicator_level2 0.7
//---- 
extern int        Period_DeMarker       = 14;
//---- 
double            DeMarker_buffer0[],
                  MA0[],
                  MA1[],
                  MA11[],
                  MA2[],                        
                  MA22[];      

#define SIGNAL_BAR 1
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
IndicatorBuffers(6);
SetIndexBuffer(0,DeMarker_buffer0);
SetIndexBuffer(1,MA0);
SetIndexBuffer(2,MA1);
SetIndexBuffer(3,MA2);
SetIndexBuffer(4,MA11);
SetIndexBuffer(5,MA22);
SetIndexStyle(0,DRAW_NONE);
SetIndexStyle(1,DRAW_NONE);
SetIndexStyle(2,DRAW_NONE);
SetIndexStyle(3,DRAW_NONE);
SetIndexStyle(4,DRAW_NONE);
SetIndexStyle(5,DRAW_NONE);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   int    counted_bars=IndicatorCounted();
   int    i,limit;
//----
if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//----
  for(i=limit; i>=0; i--)
  DeMarker_buffer0[i]=iDeMarker(NULL,0,14,i);
//---- 
  for(i=limit; i>=0; i--)
  
  MA0[i]=iMAOnArray(DeMarker_buffer0,0,5,0,MODE_LWMA,i);
//----   
  static int PrevTime = 0;
//---- 
  if(PrevTime >= Time[0]) return(0);
//---- 
  PrevTime = Time[0];
//----
                if(MA0[SIGNAL_BAR] - 0.3 > 0 && 0.3 - MA0[SIGNAL_BAR+1] >= 0)  
//---- 
                                Alert( "sMA(", Symbol(), ", ", Period(), ")  -  BUY!!!" );
//----
if(PrevTime <= Time[0]) 

return(0);
//---- 
  PrevTime = Time[0];
//----          
                if(0.7 - MA0[SIGNAL_BAR] > 0 && MA0[SIGNAL_BAR+1] - 0.7 >= 0)
//----               
                                Alert("sMA(", Symbol(), ", ", Period(), ")  -  SELL!!!");
                                
                                
MA1[i]=iMA(NULL,0,8,0,MODE_LWMA,PRICE_CLOSE,i);
                        
MA2[i]=iMA(NULL,0,16,0,MODE_LWMA,PRICE_CLOSE,i);

MA11[i]=iMA(NULL,0,8,0,MODE_LWMA,PRICE_CLOSE,i);
                        
MA22[i]=iMA(NULL,0,16,0,MODE_LWMA,PRICE_CLOSE,i);                                                       
                
//----   
if((MA1[i]>MA2[i]) && (MA11[i+1]<MA22[i+1]))  
//---- 
                                Alert( "speedMA(", Symbol(), ", ", Period(), ")  -  SIGNAL1!!!" );    

if((MA1[i]<MA2[i]) && (MA11[i+1]>MA22[i+1]))  
//---- 
                                Alert( "speedMA(", Symbol(), ", ", Period(), ")  -  SIGNAL2!!!" );   

   return(0);
  }
 

Wie bringe ich MathRand dazu, richtig zu funktionieren? Ich erhalte jedes Mal, wenn ich es ausführe, den gleichen Satz an Zufallszahlen. Das heißt, sie sind nicht zufällig.

 

Wie bringe ich MathRand dazu, richtig zu funktionieren? Ich erhalte jedes Mal, wenn ich es ausführe, den gleichen Satz an Zufallszahlen. Das heißt, sie sind nicht zufällig.