Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4
Startseite Registrieren Hilfe Community Kalender Heutige Beiträge Suchen

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4978
Beiträge: 43260
Benutzer: 7.224
Aktive Benutzer: 74
Links: 84
Wir begrüßen unseren neuesten Benutzer: Sundaytrader
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 17 Stunden
- Sundaytrad...
vor einem Tag
- TS_6
vor 3 Tagen
- Mane
vor 2 Wochen
- AlbertZiz
vor 2 Wochen
- michak

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 363
Gesamt: 363
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 20.02.17
Neues Mitglied
 
Registriert seit: Dec 2016
Beiträge: 29
Ado1964 befindet sich auf einem aufstrebenden Ast
Standard Probleme bei Auswahl der Orders - MagicNumber

Hi zusammen,

ich habe irgendwie ein Problem beim Ansprechen der offenen Orders , hier weahrscheinlich mit der MagicNumber als eindeutigen Identifier der jeweiligen Order.

Ich lasse über den EA zB maximal 2 Orders öffnen. Nun öffnet er mir zB 2 Sell-Orders mit:

if (CheckOrders(Symbol())<= _maxOrders) // Anzahl der offenen Order
{

//for(int i = 0;i <= _maxOrders-1;i++)
{
if ( OrderSend(Symbol(), OP_SELL, LotSize, Bid, 2, 0, 0, NULL, _MagicNumber, 0, Red) < 0 )

(Kommentar: die _MagicNumber wurde zunächst mit 12345 vorgegeben)
{
_GetLastError = GetLastError();
Alert( "Fehler OrderSend № ", _GetLastError );
return(-1);
}
_MagicNumber=_MagicNumber+1;
}
return(0);
}

d.h. nach jedem Öffnen der Order müsste er ja zunächst 12345 und dann 12346 vergeben als _MagicNumber.

Versuche ich nun bei Eintreten bestimmter Bedingungen zB den Trailingstop
für beide Sell-Orders nachzuziehen, funzt das nur für die erste Sell-Order

Das NAchziehen erfolgt über:

if (CheckOrders(Symbol())>0)
for(int i=0;i<=CheckOrders(Symbol());i++)
{

//---- wenn eine SELL-Position geöffnet ist,

if (OrderType()==OP_SELL)
....
if ( !OrderModify( _SellTicket, _SellOpenPrice, NormalizeDouble( Ask + TrailingStop*MyPoint, Digits ),_SellTakeProfit, 0 ) )
{
Alert( "OrderModify Error StopLoss-TS2 Sell auf: ",Symbol()," ",_SellTicket, "#: ", GetLastError() );
}

....
}

wie kann ich denn 2 (oder mehr) Orders ansprechen zwecks Nachziehgen des Stoploss oder halt auch zu weiteren Zwecken??


danke euch :-)
  #2 (permalink)  
Alt 20.02.17
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Wüsste ich auch zu gerne.

Aber wozu z.B. 2x Sell?
  #3 (permalink)  
Alt 20.02.17
Neues Mitglied
 
Registriert seit: Dec 2016
Beiträge: 29
Ado1964 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von MA-EA Beitrag anzeigen
Wüsste ich auch zu gerne.

Aber wozu z.B. 2x Sell?
....das war nur ein Beispiel. Wenn ich zB max. 3 Trades zulasse, kann es ja passieren, dass der EA in der Reihenfolge SELL, BUY, SELL öffnet und dann muss ich 3 Order ja selektieren können nach dem Prinzip:
wenn 1. Sell-Order Bedingung erfüllt, dann StopLoss nachziehen
usw für alle 3 Order...

bin entweder langsam Code-Blind oder irgendwie krieg ich das nicht hin....wäre sehr dankbar für jeden Tipp, ist schliesslich ein wichtiger Aspekt des EA


danke :-)
  #4 (permalink)  
Alt 20.02.17
Premium Mitglied
 
Registriert seit: Apr 2015
Beiträge: 422
Raul0 befindet sich auf einem aufstrebenden Ast
Standard

Ich weiss nicht was CheckOrders(Symbol()) ausgibt, vermutlich hast Du hier eine Schleife die die Anzahl der Orders durchzählt.
Anschließend fehlt Dir die Selection der Order. Woher soll der MT4 wissen, welche Order zu ansprichst?

PHP-Code:
if (CheckOrders(Symbol())>0)
for( 
int i 0<= CheckOrders(Symbol()); i++ )
{

  
//Auswahl
  
if( OrderSelect(iSELECT_BY_POSMODE_TRADES) )
  
//und die Magicnummer muss beachtet werden
  
if( OrderMagicNumber() == _MagicNumber )
  {

//---- wenn eine SELL-Position geöffnet ist,

if (OrderType()==OP_SELL) .....

  }
//Ende der Orderschleife 
__________________

Easy Trading Assistant
  #5 (permalink)  
Alt 21.02.17
Neues Mitglied
 
Registriert seit: Dec 2016
Beiträge: 29
Ado1964 befindet sich auf einem aufstrebenden Ast
Standard

....vielen Dank :-)

klingt logisch

wenn ich nun mehrere Order offen habe (vielleicht auch 2 Sells) müsste das ja mit :

if (CheckOrders(Symbol())<= _maxOrders)
{

//for(int i = 0;i <= _maxOrders-1;i++)
{
if ( OrderSend(Symbol(), OP_SELL, LotSize, Bid, 2, 0, 0, NULL, _MagicNumber, 0, Red) < 0 )
{
_GetLastError = GetLastError();
Alert( "Fehler OrderSend № ", _GetLastError );
return(-1);
}
_MagicNumber=_MagicNumber+1;
}
return(0);
}

und dann erneuter Auswahl auch funzen?

danke
Thema geschlossen

Lesezeichen

Stichworte
auswahl order, magicnumber, mql4, order, order magicnumber, programmierung, programmierung metatrader, programmierung mql4


Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +2. Es ist jetzt 12:04 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------