Ein Berater, der den Kurs auf einem Fünf-Minuten-Chart mit Bedingungen nach dem Start verfolgen würde: - Seite 7

 
int start()
{
if(OrdersTotal() !=0) return;

//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //Der Preis ist um mehr als Delta-Punkte gefallen
........


 
zhuki:
if(OrdersTotal ()!=0) return;

Was ist mit den Aufträgen anderer Leute (mit anderen Symbolen und Magiern)? In der Testversion wird es funktionieren, aber wenn neben diesem EA noch etwas anderes auf dem Konto ist, ist der richtige Weg wie folgt

bool NmbrOfOpened(int Magic){
 
   int  _OrdersTotal=OrdersTotal();
 
   if (_OrdersTotal>0) {
       for (int i=0; i<_OrdersTotal; i++) {    
         OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
         if (OrderMagicNumber()==Magic && OrderSymbol()==Symbol()) {
            return(true);  break; 
         }
       }
   }
   else return(false); 
 return(false);
}

Die Funktion gibt false zurück, wenn es keine Position gibt, die durch das aktuelle Symbol mit dem angegebenen (übergebenen) Zauberer geöffnet ist.

 
Sie werden den Mann in die Irre führen, und er kann die Beschreibungen nicht lesen.
Stellen Sie sich vor, wie verwirrt er sein wird, deshalb habe ich es so geschrieben, dass er es besser verstehen kann.
 
Sehr gut, so langsam habe ich den Dreh raus :))
Beide Fälle wurden aufgeklärt, vielen Dank.
 
Nur bei Expert Advisor verstehe ich immer noch nicht, wie die Delta-Funktion funktioniert
Deals werden unter meinen Bedingungen nicht ausgelöst
Delta=30
Das heißt, ich möchte, dass mein Expert Advisor eine Position von +-30 in Pips eröffnet. Aber es öffnet sich bei 5-10 Pips nach oben und unten, es ist nicht klar....
 
Wirklich, die Delta-Funktion weiß einfach nicht, wie sie funktioniert :(
Vielleicht gibt es andere einfache Lösungen?
Ich habe eine Funktion gefunden
Distance=30 // Abstand vom aktuellen Preis zum Preis der Pending Order
Kann sie nicht nur für Pending Orders implementiert werden?
Die Idee ist dieselbe: Verfolgen Sie den aktuellen Balken, seinen Eröffnungskurs und wenn während eines 5-Minuten-Balkens sein Preis entweder steigt oder fällt um, sagen wir, 30 Pips vom Eröffnungskurs dieses 5-Minuten-Balkens, nur dann öffnen Sie eine Position......
Meine Strategie funktioniert nicht mit schwebenden Aufträgen.....

 

Und Sie würden Ihren gesamten Code hier veröffentlichen. Und sehen Sie, warum Delta nicht funktioniert...

 
//+------------------------------------------------------------------+
//|                                                Expert-000001.mq4 |
//|                                    Copyright © 2008, salesman*** |
//|                                         http://www.forexgrand.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, salesman***"
#property link      "http://www.forexgrand.ru"
#include <WinUser32.mqh>
#include <stdlib.mqh>
extern double StopLoss=30;                        // Stop Loss
extern double TakeProfit=3;                       // Take Profit
extern double Lots=0.5;                           // Объем сделки в %
extern double Slippage =3;                        // Максимальное отклонение от запрошенной цены
extern double MagicNumber=0;                      // Order ID
int  ticket;
int Delta=30;                                     // Сигнал приказа в пунктах
int TimeForSleep = 10;                            // Время для отдыха после сделки

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
if(OrdersTotal()!=0)  return; //Выполнять только одну сделку.

//----
if (iOpen(NULL,0,0)-Ask>=Delta*Point) //Цена упала больше или = Delta пунктов
//Null-тек инструмент, 0-тек.график, 0-слежка за тек баром
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил",MagicNumber,11111,Green);

}
if (iOpen(NULL,0,0)-Bid<=Delta*Point) //Цена выросла больше или = Delta пунктов
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Продал",MagicNumber,22222,Green);
}
//----
return(0);
}




//+------------------------------------------------------------------+
//+------------------------------------------------------------------+

Hier ist der gesamte Code.....
 

Ja, in der Tat. Delta.... funktioniert nicht

Offensichtlich ist es hier notwendig, mit Zeichen (Polarität) eines Deltas zu verstehen, beim Kauf und beim Verkauf, "für" im Code oben, zum Beispiel, beim Kauf Wert(iOpen(NULL,0,0)-Ask alle Zeit wird negativ sein. Und der Handel wird zum Eröffnungskurs des Balkens eröffnet (iOpen(NULL,0,0)-Ask>=Delta...

Wenn Sie es auf diese Weise versuchen (kaufen) -

if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла на больше или = Delta пунктов
 
d.h. wir müssen eventuell diese Variante testen:

int start()
{
if(OrdersTotal()!=0) return; //Verfolgen Sie nur einen Handel.

//----
if (Bid - iOpen(NULL,0,0)<=Delta*Point) //Der Kurs ist um weniger oder = Delta-Punkte gefallen
//Null-Tek-Instrument, 0-Tek.chart, 0-Tracking-Tek-Bar
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point, "Buy",MagicNumber,11111,Green);

}
if (Ask - iOpen(NULL,0,0)>=Delta*Punkt) //Der Kurs stieg um mehr oder = Delta-Punkte
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Punkt,Bid-TakeProfit*Punkt, "Sold",MagicNumber,22222,Green);
}
//----
return(0);
}
Liege ich richtig, oder habe ich Ask mit Bid in den Zeilen verwechselt:
if (Bid - iOpen(NULL,0,0)<=Delta*Point) //Цена упала на меньше или = Delta пунктов

if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла на больше или = Delta пунктов
Grund der Beschwerde: