Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Öffne neue Order gleich nachdem letzte Oder ausgestoppt wurde (http://www.expert-advisor.com/forum/showthread.php?t=4326)

pako 25.06.15 20:54

MarketInfo(Symbol(),MODE_STOPLEVEL) geprüft?

traderdoc 25.06.15 21:11

Zitat:

Zitat von traderdoc (Beitrag 30252)
Nun lass ihn mal ein wenig mitmachen.

STOPLOSS*Point() und TAKEPROFIT*Point()
Außerdem wieder diese unsaubere Sache mit dem Ignorieren der 5-DigitBroker.
Das würde bei ihm nach Deiner Funktion und den Variablenwerten von StopLoss = 25 und TakeProfit = 20 zu realen Werten von 2,5 und 2,0 Pips führen. Da kann es schon wieder Probleme mit dem StopLevel geben.

traderdoc

@pako:MarketInfo(Symbol(),MODE_STOPLEVEL) geprüft?

Na das habe ich doch schon in Post #28 geschrieben!!!, wenn er seine "20" Pips nimmt und ohne Berücksichtigung des 5Digit das in Deine Funktion einsetzt.
Aber Du hast ja immer geschrieben 1 Pip = 1Pip, auch in Afrika.
Ist zwar formal, wie es da steht, richtig aber eben doch im Endeffekt falsch!
Und daran wird er scheitern, solange er nicht die 5Digit-Verhältnisse berücksichtigt.

traderdoc

pako 25.06.15 22:02

Zitat:

Zitat von traderdoc (Beitrag 30275)
@pako:MarketInfo(Symbol(),MODE_STOPLEVEL) geprüft?

Na das habe ich doch schon in Post #28 geschrieben!!!, wenn er seine "20" Pips nimmt und ohne Berücksichtigung des 5Digit das in Deine Funktion einsetzt.
Aber Du hast ja immer geschrieben 1 Pip = 1Pip, auch in Afrika.
Ist zwar formal, wie es da steht, richtig aber eben doch im Endeffekt falsch!
Und daran wird er scheitern, solange er nicht die 5Digit-Verhältnisse berücksichtigt.

traderdoc

ich habe SL 50 pip nur geschrieben um die funktion zu prüfen.
Ohne den kompletten Code kann man sowieso nichts sagen.
Der Heilige Gral wahrscheinlich:D

saro2018 25.06.15 22:05

Zitat:

Zitat von traderdoc (Beitrag 30275)
@pako:MarketInfo(Symbol(),MODE_STOPLEVEL) geprüft?

Na das habe ich doch schon in Post #28 geschrieben!!!, wenn er seine "20" Pips nimmt und ohne Berücksichtigung des 5Digit das in Deine Funktion einsetzt.
Aber Du hast ja immer geschrieben 1 Pip = 1Pip, auch in Afrika.
Ist zwar formal, wie es da steht, richtig aber eben doch im Endeffekt falsch!
Und daran wird er scheitern, solange er nicht die 5Digit-Verhältnisse berücksichtigt.

traderdoc

Guten Abend, ich habe soweit das mit dem SL und TP hinbekommen, sprich er führt eine Order aus. Allerdings wenn ich im Journal schaue, durchläuft er gar nicht die Schleife. Warum komm ich dann zu der Annahme, dass er den SL und TP nimmt, allerdings die Schleife nicht bis zum Ende durchläuft? Weil der SL und TP von jeweils 10 Pips eingestellt werden, nachdem ein Trade im Verlust geschlossen wurde.
Jetzt gibt es allerdings eine neue Schwierigkeit, undzwar will ich dass er nur von den Ersten Bedinungen eine Gegenposition falls Verlust öffnet. Dafür habe ich mir überlegt im Comment der Order etwas zu schreiben und dies dann in die Bedinung für einen Verlust mit einzubetten. Das macht allerdings noch Probleme. Des Weiteren geht er im Gewinnfall nicht mehr zurück zu der oberen Gewinnbedinung. Woran könnte das liegen?

Gruß
Aron

Hier der Code:
Code:

if (closedProfit < 0 && (lastcomment=="Buy St" || lastcomment=="Sell St"))
    Print("8");
    double STOPLOSS = 100;
    double TAKEPROFIT = 100;
  //if(total < 1)
  {          //was soll total sein???
      if (lastorder == 0) {
      Print("Gegenposi");
        ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 2, Bid + (STOPLOSS*Point), Bid - (TAKEPROFIT*Point), "abgesichert", mymagicnumber);
          if(ticket>0)
        {
        if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
        }
        else Print("Error opening SELL order : ",GetLastError());
        return(0);     
      }
      if (lastorder == 1)
      {
      Print("Gegenposition Buy");
      ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 2,Ask - (STOPLOSS*Point), Ask + (TAKEPROFIT*Point), "abgescihert", mymagicnumber);
      if(ticket>0)
        {
        if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
        }
        else Print("Error opening BUY order : ",GetLastError());
        return(0);
         
      }

  }


traderdoc 25.06.15 22:45

Zitat:

Zitat von pako (Beitrag 30276)
ich habe SL 50 pip nur geschrieben um die funktion zu prüfen.
Ohne den kompletten Code kann man sowieso nichts sagen.
Der Heilige Gral wahrscheinlich:D

Ach @pako, jetzt rede Dich nicht raus!
Ohne 5Digit-Prüfung ist in der Regel jeder EA nichts wert.

traderdoc

pako 26.06.15 10:36

Zitat:

Zitat von saro2018 (Beitrag 30277)
....

Code:

//+------------------------------------------------------------------+
//|                                                    saro2018.mq4 |
//+------------------------------------------------------------------+
#property strict
int StopLoss  =10;
int TakeProfit =10;
int Slippage    =2;
double Lot    =0.01;
int LastTyp=-1;
int Magic=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
  if(Digits()==5 || Digits()==3)//+------------------------------------------------------------------+
    {                          //| @traderdoc prüfung                                               |
      TakeProfit*=10;            //+------------------------------------------------------------------+
      StopLoss*=10;
      Slippage *=10;
    }
   
    //prüfung
    //prüfung
    //prüfung
    //prüfung
    //u.s.w
//---
  return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
    //prüfung
    //prüfung
    //prüfung
    //prüfung
    //u.s.w
  }
//+------------------------------------------------------------------+
//| Expert tick function                                            |
//+------------------------------------------------------------------+
void OnTick()
  {
    //prüfung
    //prüfung
    //prüfung
    //prüfung
    //u.s.w
//---
  if(OrdersTotal()==0)
    {
      if(isCloseLastPosByStopLoss())
        {
        if(LastTyp==0)
          {
            if(OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,NormalizeDouble(OrderOpenPrice()+StopLoss*Point(),Digits()),NormalizeDouble(OrderOpenPrice()-TakeProfit*Point(),Digits()),"Sell",Magic,0,clrGreen)) Print("OK Sell");
            else Print(GetLastError());
          }
        if(LastTyp==1)
          {
            if(OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,NormalizeDouble(OrderOpenPrice()-StopLoss*Point(),Digits()),NormalizeDouble(OrderOpenPrice()+TakeProfit*Point(),Digits()),"Buy",Magic,0,clrGreen)) Print("OK Buy");
            else Print(GetLastError());
          }
        }
    }
  }
//+------------------------------------------------------------------+
bool isCloseLastPosByStopLoss()
  {
  int      Pos=-1;
  datetime Zeit=0;
  for(int i=OrdersHistoryTotal()-1; i>=0; i--)
    {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
        if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
          {
            if(OrderType()<2)
              {
              if(Zeit<OrderCloseTime())
                {
                  Zeit=OrderCloseTime();
                  Pos=i;
                  LastTyp=OrderType();
                }
              }
          }
        }
    }
  if(OrderSelect(Pos,SELECT_BY_POS,MODE_HISTORY))
    {
      if(NormalizeDouble(OrderClosePrice(),5)==NormalizeDouble(OrderStopLoss(),5))
        {
        return(True);
        }
    }
  return(False);
  }
//+------------------------------------------------------------------+

prüfen MarketInfo(Symbol(),MODE_STOPLEVEL)
prüfen, erlaubt Brocker sofort SL,TP senden
oder SL,TP=0, und dann OrderModify

nicht vergessen "traderdoc prüfung" sonst beißt wieder:D

saro2018 26.06.15 11:33

Zitat:

Zitat von traderdoc (Beitrag 30279)
Ach @pako, jetzt rede Dich nicht raus!
Ohne 5Digit-Prüfung ist in der Regel jeder EA nichts wert.

traderdoc

Woran könnte das liegen, dass dieser Fehler jetzt auftritt?
Er durchläuft die Schleife nicht mehr, das heißt er benutzt zwar die Werte für den SL und TP im Verlustfall allerdings durchläuft er dann die Schleife nicht.

Gruß
Aron

pako 26.06.15 11:47

Zitat:

Zitat von saro2018 (Beitrag 30283)
Woran könnte das liegen, dass dieser Fehler jetzt auftritt?
Er durchläuft die Schleife nicht mehr, das heißt er benutzt zwar die Werte für den SL und TP im Verlustfall allerdings durchläuft er dann die Schleife nicht.

Gruß
Aron

logische Fehler lieber im Debugger suchen

saro2018 26.06.15 12:39

Zitat:

Zitat von pako (Beitrag 30284)
logische Fehler lieber im Debugger suchen

Hab im Kompiler keine Fehler gefunden meinst du das? Oder im Jornal?

pako 26.06.15 13:07

Zitat:

Zitat von saro2018 (Beitrag 30285)
Hab im Kompiler keine Fehler gefunden meinst du das? Oder im Jornal?

im Debugger


EA http://www.expert-advisor.com/forum/...html#post30282


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:35 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum