Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 523

 
Hüllkurven-Indikator in EA, EA hat sich selbst geschrieben, in den Einstellungen habe ich einen Shift (-7) eingestellt. Warum öffnet EA keine Aufträge mit einem negativen Shift imHüllkurven-Indikator?
 
Vagif Babaev:
Hüllkurven-Indikator in EA, EA hat sich selbst geschrieben, in den Einstellungen habe ich einen Shift (-7) eingestellt. Warum öffnet EA keine Aufträge mit einem negativen Shift imHüllkurven-Indikator?
In iEnvelopes sollte der Index eines aus dem Indikatorpuffer empfangenen Wertes nicht kleiner als die Verschiebung sein, d. h. der letzte Wert sollte nicht kleiner als 7 sein.
 
demonoid123000:
Liebe Programmierer. Können Sie helfen? Ich möchte die Anzahl der offenen Aufträge an Expert Advisors anhängen. Ich weiß nicht, ob es helfen würde. Ich habe diese Eulen auf mehrere Paare angesetzt und nur eine Bestellung ist geöffnet. Wenn ich einen Auftrag für eines der Paare eröffne, werden die Signale für das andere Paar nicht ignoriert. Ich weiß nicht, was ich damit anfangen soll.

das Problem ist diese Bedingung

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)

So sollte es funktionieren.

//+------------------------------------------------------------------+
//|                                                    Hippo_Buy.mq4 |
//|                                                        ut_Kanada |
//|                                            albertgod1972@mail.ru |
//+------------------------------------------------------------------+
#property copyright "ut_Kanada"
#property link      "albertgod1972@mail.ru"
#property version   "1.00"
#property strict
//===================================================================+
//                          ЗАДАНЫЕ ЗНАЧЕНИЯ                         |
//===================================================================+

extern double Lot= 0.1;
extern bool Stop = true;
extern int SL = 250;
extern int TP = 500;

extern bool BU=false;        // Переменная для включения Безубытка.

extern bool Tral = true;       // Переменная для выключения трала.
extern int putr = 100;         // Включение трала при прохождении цены putr пунктов.
extern int TrailingStop = 150; // Непосредственно сам трал.

                               //*****************************************************************************************************************
//==================================================================+
//                  Переменные для программы                        |
//==================================================================+

int TekBar = -1;             // Текущий бар.
int Or;                      // Номер ордера.
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//==================================================================+

int start()
  {

//==================================================================+
//                           Индикаторы                             |
//==================================================================+

   double TA1=NormalizeDouble(iCustom(NULL,0,"Trendsignal_Alert_Buy",3,300,true,true,0,0,false,1,0,1),Digits);

//==================================================================+
//                     Условия модификации Ордеров.                 |
//==================================================================+
   if(Tral==true)
     {
      int cnt;
      for(cnt=OrdersTotal(); cnt>=0; cnt--)
        {
         Or=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

         if(OrderType()==OP_SELL)
           {
            if(OrderOpenPrice()-Ask>=putr*Point)
               if(OrderStopLoss()>(Ask+Point*(TrailingStop+MarketInfo(Symbol(),MODE_SPREAD))))
                  Or=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,0);
           }

         if(OrderType()==OP_BUY)
           {
            if(Bid-OrderOpenPrice()>=putr*Point)
               if(OrderStopLoss()<(Bid-Point*(TrailingStop+MarketInfo(Symbol(),MODE_SPREAD))))
                  Or=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,0);
           }
        }
     }

//==================================================================+
//                    Условия перевода в Безубыток.                 |
//==================================================================+  

   if(BU==true)
     {
      int cnt;
      for(cnt=OrdersTotal(); cnt>=0; cnt--)
        {
         Or=OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

         if(OrderType()==OP_SELL && OrderStopLoss()>=OrderOpenPrice())
           {
            if(OrderOpenPrice()-Ask>=putr*Point)
               if(OrderStopLoss()>(Ask+Point*(TrailingStop+MarketInfo(Symbol(),MODE_SPREAD))))
                  Or=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,0);
           }

         if(OrderType()==OP_BUY)
           {
            if(Bid-OrderOpenPrice()>=putr*Point && OrderStopLoss()<=OrderOpenPrice())
               if(OrderStopLoss()<(Bid-Point*(TrailingStop+MarketInfo(Symbol(),MODE_SPREAD))))
                  Or=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,0);
           }
        }
     }

//==================================================================+    
/*
  int q;                                             
  for(q = 1; q <= Bars; q++)
  {
   double TAq = NormalizeDouble(iCustom(NULL,0,"Trendsignal_Alert_Buy",3,300,true,true,0,0,false,1,0,q),Digits);
   if(TAq != 0)
   {
    Comment("TAq = ",TAq);
    break;
   }
  }*/
//==================================================================+
//                    Условия и Открытие Ордеров.                   |
//==================================================================+

   if(Stop==true)
     {
      if(Total_orders(_Symbol)==0)
        {
         if(TekBar==Bars)return(0);
         TekBar=Bars;
           {
            if(TA1>High[1] && TA1!=0) // Условия продажи.
               Or=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Bid+SL*Point,Bid-TP*Point,"000",0,0,Tomato);        // Продажа.               

            if(TA1<Low[1] && TA1!=0)
               Or=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Ask+TP*Point,"000",0,0,RoyalBlue);      // Покупка.     ;

           }
        }
     }

   if(Stop==false)
     {
      if(Total_orders(_Symbol)==0)
        {
         if(TekBar==Bars)return(0);
         TekBar=Bars;
           {
            if(TA1>High[1] && TA1!=0) // Условия продажи.
               Or=OrderSend(Symbol(),OP_SELL,Lot,Bid,3,0,0,"000",0,0,Tomato);        // Продажа.                

            if(TA1<Low[1] && TA1!=0)
               Or=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,0,"000",0,0,RoyalBlue);      // Покупка.     
           }
        }
     }
//----   
   return(0);
  }
//+------------------------------------------------------------------+
int Total_orders(string symbol
                 //int type
                 )
  {
   int n=0;
   int total=OrdersTotal();

   for(int i=0; i<total; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS))
        {
         //if(OrderType()!=type)continue;
         //if(OrderMagicNumber()!=Magic)continue;
         if(OrderSymbol()!=symbol)continue;
         n++;
        }
     }
   return(n);
  }
//+------------------------------------------------------------------+
 
angel341:
Mit welchem Parameter oder welcher Funktion lässt sich der Indikator um n Punkte nach oben oder unten verschieben?
Parameter Shift hinzugefügt, positive Zahl verschiebt nach oben, negative Zahl nach unten.
Dateien:
 
Sergey Gritsay:

das Problem ist diese Bedingung

So sollte es funktionieren

Ich kenne die Programmiersprache überhaupt nicht... kurz gesagt, ich verstehe sie nicht. Vielleicht können Sie diese Werte ändern?
 
demonoid123000:
Ich kenne die Programmiersprache überhaupt nicht... Ich verstehe sie nicht. Vielleicht können Sie diese Werte ändern?
Woher haben Sie dann diesen Code?
 
Sergey Gritsay:
den Parameter Shift hinzugefügt, positive Zahlen nach oben, negative Zahlen nach unten verschoben.
Vielen Dank! Ich werde es jetzt testen!!!!
 

Sergey Gritsay:
добавил параметр Shift, положительное число смещение вверх, отрицательное вниз.

Herzlichen Dank!

 
Sergey Gritsay:

meint er etwa Folgendes

Werden durch die Ausführung dieser Funktion Aufträge gelöscht? Wenn sie am Anfang des Codes aufgerufen wird:" if(TimeCurrent()>=D'23:50')close_all();return;", dann arbeitet das Programm nicht weiter, d.h. es werden keine Aufträge eröffnet und im Log steht "stop button pressed". Wenn ich diese eine Zeile lösche, funktioniert alles und öffnet sich. Könnten Sie bitte erklären, was falsch ist? Ich weiß nicht viel über Details, deshalb habe ich nur den Hauptteil der Funktion kopiert.
 
toni_stark:
Werden durch die Ausführung dieser Funktion Aufträge gelöscht? Wenn sie am Anfang des Codes aufgerufen wird:" if(TimeCurrent()>=D'23:50')close_all();return;", dann arbeitet das Programm nicht weiter, d.h. es werden keine Aufträge eröffnet und im Log steht "stop button pressed". Wenn ich diese eine Zeile lösche, funktioniert alles und öffnet sich. Könnten Sie bitte erklären, was falsch ist? Da ich mich nicht mit Details auskenne, habe ich nur den Hauptteil der Funktion kopiert.
Ihren Code bitte
Grund der Beschwerde: