[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 291

 
Danke an alle! Ich habe es herausgefunden... Ich habe es zuerst ohne IndicatorBuffers(2) gemacht; und es hat nicht funktioniert...
 

Ich nahm gute Parameter müssen nur hinzufügen, dass es eine Menge von martingale (2 mehr, wenn Sie verlieren) oder geben Sie mir einen Hinweis auf die Berater, die nur verdoppeln wird die Menge, ohne zu warten, für eine Auslosung zu 2 laufen (falls vorhanden).Hier ist ein Berater:

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

|| Fractals.mq4 |

//| TO |

//| http://www.forex-tradexperts-to.narod.ru |

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

#property copyright "TO"

#property link "http://www.forex-tradexperts-to.narod.ru"





#include <WinUser32.mqh>.


extern int TP_Fract_3=300;

extern int SL_Fract_3=200;

extern int TP_Fract_11=500;

extern int SL_Fract_11=300;

extern bool buy_Fract_3=true;

extern bool sell_Fract_3=true;

extern bool buy_Fract_11=true;

extern bool sell_Fract_11=true;

extern bool podtvergdenie=false;

extern int tofract=10;

extern double lots=0.1;

extern int ID = 5452;


string com;

Doppelseite;


int init()

{

com=DoubleToStr(ID,0);

spread=MarketInfo(Symbol(),MODE_SPREAD)*Point;

zurück(0);

}


int deinit()

{

zurück(0);

}


datetime t1,t2=0;


bool order(double price,int type,string c,int m)

{

int i;

for(i=BestellungenGesamt()-1;i>=0;i--)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderComment()==c && OrderMagicNumber()==m && OrderOpenPrice()==price && OrderType()==type)return(false);

if(i==0)return(true);

}

if(OrdersTotal()==0)return(true);

}


int start()

{

int i,ret;

t1=Zeit[0];

if(t1!=t2)

{

int fract_buy_3=iHighest(Symbol(),Zeitraum(),MODE_HIGH,5,1);

int fract_sell_3=iLowest(Symbol(),Zeitraum(),MODE_LOW,5,1);

int fract_buy_11=iHighest(Symbol(),Zeitraum(),MODE_HIGH,21,1);

int fract_sell_11=iLowest(Symbol(),Zeitraum(),MODE_LOW,21,1);

if( fract_buy_3==3 && buy_Fract_3==true)

{

if(OrdersTotal()==0)if(Order(High[Fract_buy_3]+tofract*Point+spread,4,com,5))OrderSend(Symbol(),OP_BUYSTOP,lots,High[Fract_buy_3]+tofract*Point+spread,10,High[fract_buy_3]+tofract*Point-SL_Fract_3*Point,High[fract_buy_3]+tofract*Point+spread+TP_Fract_3*Point,5);

for(i=BestellungenGesamt()-1;i>=0;i--)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(Bestellkommentar()==com && BestellMagicNumber()==5 && BestellTyp()==4)

{

OrderModify(OrderTicket(),Hoch[Frakt_Kauf_3]+Frakt*Punkt+Spanne, Hoch[Frakt_Kauf_3]+Frakt*Punkt-SL_Frakt_3*Punkt, Hoch[Frakt_Kauf_3]+Frakt*Punkt+Spanne+TP_Frakt_3*Punkt,0,Blau);

Pause;

}

if(i==0)if(Reihenfolge(Hoch[Frakt_Kauf_3]+Frakt*Punkt+Spanne,4,com,5))

{

if(podtvergdenie)

{

ret=MessageBox("Signal bei "+Symbol()+" H1 BUYSTOP "+"{Order setzen?", "Signal", MB_YESNO|MB_ICONQUESTION);

if(ret==IDYES)OrderSend(Symbol(),OP_BUYSTOP,lots,High[fract_buy_3]+tofract*Point+spread,10,High[fract_buy_3]+tofract*Point-SL_Fract_3*Point,High[fract_buy_3]+tofract*Point+spread+TP_Fract_3*Point,5);

}

if(!podtvergdenie)OrderSend(Symbol(),OP_BUYSTOP,lots,High[fract_buy_3]+tofract*Point+spread,10,High[fract_buy_3]+tofract*Point-SL_Fract_3*Point,High[fract_buy_3]+tofract*Point+spread+TP_Fract_3*Point,com,5);

}

}

}

if( fract_sell_3==3 && sell_Fract_3==true)

{

if(OrdersTotal()==0)if(Order(Low[Fract_sell_3]-tofract*Point,5,com,5))OrderSend(Symbol(),OP_SELLSTOP,lots,Low[Fract_sell_3]-tofract*Point,10,Niedrig[frakt_verkauf_3]+Spread-tofract*Point+SL_Fract_3*Point,Niedrig[frakt_verkauf_3]-tofract*Point-TP_Fract_3*Point,com,5);

for(i=BestellungenGesamt()-1;i>=0;i--)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(AuftragsKommentar()==com && AuftragsMagischeNummer()==5 && AuftragsTyp()==5)

{

OrderModify(OrderTicket(),Low[frakt_3]-tofract*Point,Low[frakt_3]+spread-tofract*Point+SL_Fract_3*Point,Low[frakt_3]-tofract*Point-TP_Fract_3*Point,0,Red);

Pause;

}

if(i==0)if(order(Low[frakt_verkauf_3]-tofract*Point,5,com,5))

{

if(podtvergdenie)

{

ret=MessageBox("Signal auf "+Symbol()+"H1 SELLSTOP "+"{Auftrag setzen?", "Signal", MB_YESNO|MB_ICONQUESTION);

if(ret==IDYES)OrderSend(Symbol(),OP_SELLSTOP,lots,Low[fract_sell_3]-tofract*Point,10,Low[fract_sell_3]+spread-tofract*Point+SL_Fract_3*Point,Low[fract_sell_3]-tofract*Point-TP_Fract_3*Point,5);

}

if(!podtvergdenie)OrderSend(Symbol(),OP_SELLSTOP,lots,Low[fract_sell_3]-tofract*Point,10,Low[fract_sell_3]+spread-tofract*Point+SL_Fract_3*Point,Low[fract_sell_3]-tofract*Point*Point,com,5);

}

}

}

if( fract_buy_11==11 && buy_Fract_11==true)

{

if(OrdersTotal()==0)if(order(High[fract_buy_11]+tofract*Point+spread,4,com,21))orderSend(Symbol(),OP_BUYSTOP,lots,High[fract_buy_11]+tofract*Point+spread,10,High[fract_buy_11]+tofract*Point-SL_Fract_11*Point,High[fract_buy_11]+tofract*Point+spread+TP_Fract_11*Point,21);

for(i=BestellungenGesamt()-1;i>=0;i--)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(Bestellkommentar()==com && BestellMagicNumber()==21 && BestellTyp()==4)

{

OrderModify(OrderTicket(),Hoch[Frakt_Kauf_11]+Frakt*Punkt+Spanne, Hoch[Frakt_Kauf_11]+Frakt*Punkt-SL_Frakt_11*Punkt, Hoch[Frakt_Kauf_11]+Frakt*Punkt+Spanne+TP_Frakt_11*Punkt,0,Blau);

Pause;

}

if(i==0)if(Reihenfolge(Hoch[Frakt_Kauf_11]+Frakt*Punkt+Spanne,4,com,21))

{

if(podtvergdenie)

{

ret=MessageBox("Signal auf "+Symbol()+"H4 BUYSTOP "+"{Auftrag setzen?", "Signal", MB_YESNO|MB_ICONQUESTION);

if(ret==IDYES)OrderSend(Symbol(),OP_BUYSTOP,High[Frakt_Kauf_11]+Frakt*Punkt+Spanne,10,High[Frakt_Kauf_11]+Frakt*Punkt-SL_Frakt_11*Punkt,High[Frakt_Kauf_11]+Frakt*Punkt+Spanne+TP_Frakt_11*Punkt,21);

}

if(!podtvergdenie)OrderSend(Symbol(),OP_BUYSTOP,lots,High[fract_buy_11]+tofract*Point+spread,10,High[fract_buy_11]+tofract*Point-SL_Fract_11*Point,High[fract_buy_11]+tofract*Point+spread+TP_Fract_11*Point,com,21);

}

}

}

if( fract_sell_11==11 && sell_Fract_11==true)

{

if(OrdersTotal()==0)if(order(Low[frakt_verkauf_11]-tofract*Point,5,com,21))orderSend(Symbol(),OP_SELLSTOP,lots,Low[frakt_verkauf_11]-tofract*Point,10,Niedrig[frakt_verkauf_11]+Spread-tofract*Point+SL_Fract_11*Point,Niedrig[frakt_verkauf_11]-tofract*Point-TP_Fract_11*Point,com,21);

for(i=BestellungenGesamt()-1;i>=0;i--)

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(Bestellkommentar()==com && BestellMagicNumber()==21 && BestellType()==5)

{

OrderModify(OrderTicket(),Low[frakt_11]-tofract*Point,Low[frakt_11]+spread-tofract*Point+SL_Fract_11*Point,Low[frakt_sell_11]-tofract*Point-TP_Fract_11*Point,0,Red);

Pause;

}

if(i==0)if(order(Low[frakt_verkauf_11]-tofract*Point,5,com,21))

{

if(podtvergdenie)

{

ret=MessageBox("Signal auf "+Symbol()+"H4 BUYSTOP "+"{Auftrag setzen?", "Signal", MB_YESNO|MB_ICONQUESTION);

if(ret==IDYES)OrderSend(Symbol(),OP_SELLSTOP,lots,Low[fract_sell_11]-tofract*Point,10,Low[fract_sell_11]+spread-tofract*Point+SL_Fract_11*Point,Low[fract_sell_11]-tofract*Point-TP_Fract_11*Point,21);

}

if(!podtvergdenie)OrderSend(Symbol(),OP_SELLSTOP,lots,Low[fract_sell_11]-tofract*Point,10,Low[fract_sell_11]+spread-tofract*Point+SL_Fract_11*Point,Low[fract_sell_11]-tofract*Point*Point,com,21);

}

}

}

t2=Zeit[0];

}

zurück(0);

}

Ich kann schlecht Russisch schreiben, tut mir leid!

 
AppaRat:

Ich bin nicht gut darin, Russisch zu schreiben, tut mir leid!

Sie wissen nicht einmal, wie man einen Code einfügt. Ich will das nicht lesen.
 

Sagen Sie mir, wer mit dem Klimov-Block helfen kann, das Problem ist, dass es nicht den Wert der letzten geschlossenen, sondern den Wert der letzten geschlossenen durch die Bedingung zurück

also unter 2 Bedingungen

bool BuystopLotA=isCloseLastPosByStop(NULL,OP_BUY,MagBuy,LotA);
и
bool BuyTakeLotB=isCloseLastPosByTake(NULL,OP_BUY,MagBuy,LotB);

gibt er beide Werte True zurück,

Wie kann man erreichen, dass nur der letzte geschlossene Auftrag zurückgegeben wird und nicht der letzte, der durch eine Bedingung festgelegt wurde?

Hier ist der Code, den ich der Einfachheit halber nach Losen geordnet hinzugefügt habe

//+----------------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия последней позиции по стопу.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByStop(string sy="", int op=-1, int mn=-1, int ll=-1) {
  datetime t;
  double   ocp, osl;
  int      dg, i, j=-1, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
             if (ll<0 || OrderLots()==ll) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
} 
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
    dg=MarketInfo(sy, MODE_DIGITS);
    if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
    ocp=NormalizeDouble(OrderClosePrice(), dg);
    osl=NormalizeDouble(OrderStopLoss(), dg);
    if (ocp==osl) return(True);
  }
  return(False);
}



//+----------------------------------------------------------------------------+
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.05.2008                                                     |
//|  Описание : Возвращает флаг закрытия последней позиции по тейку.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
bool isCloseLastPosByTake(string sy="", int op=-1, int mn=-1, int ll=-1) {
  datetime t;
  double   ocp, otp;
  int      dg, i, j=-1, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
             if (ll<0 || OrderLots()==ll) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=i;
              }
            }
          }
        }
      }
    }
  }
} 
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
    dg=MarketInfo(sy, MODE_DIGITS);
    if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
    ocp=NormalizeDouble(OrderClosePrice(), dg);
    otp=NormalizeDouble(OrderTakeProfit(), dg);
    if (ocp==otp) return(True);
  }
  return(False);
}
 
FoxUA:

Sagen Sie mir, wer mit dem Klimov-Block helfen kann, das Problem ist, dass es nicht den Wert der letzten geschlossenen, sondern den Wert der letzten geschlossenen durch die Bedingung zurück

also unter 2 Bedingungen

gibt es beide Werte True zurück,

Wie kann man erreichen, dass nur die letzte abgeschlossene Bestellung zurückgegeben wird und nicht die letzte durch eine Bedingung,

Ich habe den Code der Einfachheit halber mit einer Mengenprüfung versehen


Haben Sie diese Funktion um die Prüfung von Losen erweitert? Jetzt werden die letzten geschlossenen Positionen mit dem übergebenen Lot überprüft, und das Lot ist wahrscheinlich immer gleich Null oder eine ganze Zahl. Die Variable ll muss vom Typ double sein. Und warum brauchen wir hier eine Loskontrolle?

Du schreibst auf, was du erreichen willst, und sie werden es dir sagen :)

 

Ja, und warum ist das Los ein int? Das Grundstück war immer doppelt vorhanden.

Wenn Sie eine Bestellung übrig haben, können Sie feststellen, welche Bestellung übrig ist, und nach der anderen suchen.

 
FoxUA:

Sagen Sie mir, wer mit dem Klimov-Block helfen kann...

Duplizieren Sie keine Beiträge in verschiedenen Threads, das ist unhöflich.
 
artmedia70:

Prüfen Sie Lose in der von Ihnen hinzugefügten Funktion? Jetzt werden die letzten geschlossenen Positionen mit dem übergebenen Lot überprüft, und das Lot ist wahrscheinlich immer gleich Null oder eine ganze Zahl. Die Variable ll muss vom Typ double sein. Warum brauchen wir hier überhaupt eine Loskontrolle?

Du schreibst auf, was du erreichen willst, und sie werden es dir sagen :)

Ich habe schon alles erreicht, aber es gibt einen Fehler, nämlich dass in einem bestimmten Moment ein Auftrag auftaucht, den ich nicht brauche,

Ich habe versucht, es in int zu ändern, ursprünglich war es double, aber ich habe vergessen, es zurückzugeben, und wenn ich eine separate Funktion ohne Losprüfung verwende, ändert sich das Ergebnis nicht, also habe ich es vielleicht nicht richtig überprüft, helfen Sie mir zu verstehen, was mit diesem Fehler falsch ist

So sieht die Anfrage aus

вот так работает без проблем 
bool BuystopLotA=isCloseLastPosByStop(NULL,OP_BUY,MagBuy,LotA);
bool BuyTakeLotA=isCloseLastPosByTake(NULL,OP_BUY,MagBuy,LotA);
bool SellstopLotC=isCloseLastPosByStop(NULL,OP_SELL,MagBuy,LotC);
bool SellTakeLotC=isCloseLastPosByTake(NULL,OP_SELL,MagBuy,LotC);

при добовлении вот этих запросов
bool BuystopLotB=isCloseLastPosByStop(NULL,OP_BUY,MagBuy,LotB);
bool BuyTakeLotB=isCloseLastPosByTake(NULL,OP_BUY,MagBuy,LotB);

начинает возвращять True не по одному а по двум запросам 
BuyTakeLotB и BuystopLotA



 
Roger:

Ja, und warum ist das Los ein int? Das Grundstück war immer doppelt vorhanden.

Wenn Sie eine Bestellung übrig haben, können Sie feststellen, welche Bestellung übrig ist, und nach der anderen suchen.


es ist nicht so einfach, weil die Bedingungen für die Öffnung 2 auf den Verkauf sein kann, und dann wird diese Suche nicht etwas finden
 
granit77:
Duplizieren Sie keine Beiträge in verschiedenen Threads, das ist unhöflich.

Es tut mir leid, ich werde mich bemühen, die gleichen Beiträge aus verschiedenen Threads zu löschen,