![]() |
|
|||||||
| Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
| Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
![]() |
|
|
LinkBack | Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
|
also erstmal:
wenn du Code postest: den Code Button (ich weiss, hab ich beim ersten Mal auch nicht gemacht ^^) drücken und den Code dort reinkopieren... dann bitte strukturierter schreiben, wenn du willst, dass andere sich einlesen können. Dann solltest du allgemein mal schaun, ob du solche Codeschnipsel wirklich so meinst... Code:
if((OrderOpenTime()+3600) > TimeCurrent() && SellTicket > 0 || BuyTicket > 0) das bedeutet: wenn die Order abgelaufen ist UND es ein SellTicket ist ODER aber es ist ein BuyTicket... ich denke aber du meinst wenn die Order abgelaufen ist UND (entweder Sell oder Buy) verstehst du was ich meine? du machst im Prinzip aus einem gemeinten 4 * (3 + 2) = 20 ein (4 * 3) + 2 = 14 (Klammer hab ich nur der Übersicht halber gesetzt, ist nat. nicht nötig) //edith Achso... und beim Posten bitte auch etwas Struktur ... Deine genaue Frage? Markierung des Codeabschnitts um den es nun wirklich geht, evtl. hast du schon eine Ahnung in welcher Ecke das Problem liegt, siehst es aber nicht ^^ |
|
|||
|
Guten Morgen,
Code:
//+------------------------------------------------------------------+
//| Der Stundentrader.mq4 |
//| Der Marc |
//| Es gibt gar keine Internetseite |
//+------------------------------------------------------------------+
#property copyright "Der Marc"
#property link "Es gibt gar keine Internetseite"
//Wichtige Variablen
extern double Minlot=0.01;
extern int Digits2Round=2;
extern int PercentOfFreeDepo=1;
extern int Slippage=5;
extern int MagicNumber =1;
extern int TradeHour3=3;
extern int TradeHour4=4;
extern int TradeHour7=7;
extern int TradeHour10=10;
extern int TradeHour17=17;
extern int TradeHour18=18;
extern int TradeHour20=20;
extern int TradeHour12=12;
extern int TradeHour23=23;
extern int StopLoss=40;
//Globale Variablen
int BuyTicket;
int SellTicket;
double UsePoint;
int UseSlippage;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
UsePoint = PipPoint(Symbol());
UseSlippage = GetSlippage(Symbol(), Slippage);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
double FreeDepo=NormalizeDouble(AccountBalance()-AccountMargin(),Digits2Round);
double Risk=NormalizeDouble((FreeDepo*PercentOfFreeDepo/100),Digits2Round);
double Lot=NormalizeDouble(Risk/(StopLoss/0.0001)*0.1,Digits2Round);
//===================== Lets determine lot size and risk ===================================
if ( Lot<Minlot )
{
Lot=Minlot;
}
Comment( "\n","Acceptable risk is ",PercentOfFreeDepo, "% = ",Risk," of the free money ",FreeDepo," in lots = ",Lot);
// Buy criteria
OrderSelect(SellTicket || BuyTicket, SELECT_BY_TICKET);
//Close Order
if((OrderOpenTime()+3600) > TimeCurrent() && SellTicket > 0 || BuyTicket > 0)
{
double CloseLots = OrderLots();
double ClosePrice = Ask;
bool Closed = OrderClose(SellTicket ,CloseLots, ClosePrice, UseSlippage, Red);
}
double OpenPrice = Ask;
//BuyOrder
if ((TradeHour3==Hour())||(TradeHour4==Hour())||(Trad eHour7==Hour())||(TradeHour10==Hour())||(TradeHour 17==Hour())||(TradeHour18==Hour())||(TradeHour20== Hour())) //Signal Buy
{
int openbuy=OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage ,StopLoss,0,"time trader buy order ",MagicNumber,0,Blue);
}
SellTicket = 0;
BuyTicket = 0;
// Sell criteria
OrderSelect(BuyTicket || SellTicket, SELECT_BY_TICKET);
//Close Order
if((OrderOpenTime()+3600) > TimeCurrent() && SellTicket > 0 || BuyTicket > 0)
{
CloseLots = OrderLots();
ClosePrice = Bid;
Closed = OrderClose(BuyTicket, CloseLots, ClosePrice, UseSlippage, Red);
}
OpenPrice = Bid;
//SellOrder
if ((TradeHour12==Hour())||(TradeHour23==Hour())) //Signal Sell
{
int opensell=OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippa ge,StopLoss,0,"time trader sell order ",MagicNumber,0,Green);
}
SellTicket = 0;
BuyTicket = 0;
//----
return(0);
}
//+------------------------------------------------------------------+
//Pip Point Function
double PipPoint (string Currency)
{
int CalcDigits = MarketInfo(Currency, MODE_DIGITS);
if(CalcDigits == 2 || CalcDigits == 3) double CalcPoint = 0.01;
else if(CalcDigits == 4 || CalcDigits == 5) CalcPoint = 0.0001;
return (CalcPoint);
}
//Get Slippage Function
int GetSlippage(string Currency, int SlippagePips)
{
int CalcDigits = MarketInfo(Currency, MODE_DIGITS);
if(CalcDigits == 2 || CalcDigits == 4) double CalcSlippage = SlippagePips;
else if(CalcDigits == 3 || CalcDigits == 5) CalcSlippage = SlippagePips * 10;
return (CalcSlippage);
}
__________________
Heute Weizen, Abends Corn morgen fangen wir an von vorn... http://www.myfxbook.com/members/ciinvest |
|
|||
|
Zitat:
__________________
Heute Weizen, Abends Corn morgen fangen wir an von vorn... http://www.myfxbook.com/members/ciinvest |
|
|||
|
tja da dachte ich ich hatte nen Denkfehler und am Ende wars dann doch richtig ^^
|
|
|||
|
Zitat:
Hallo Naranjoe, auch Dir vielen Dank für Deine hilfe. Ich hatte bereits daran gedacht das ganze durch aufzähung zu lösen, aber mal ne Frage...ich werde aus der Dokumentation inm MQL Forum nicht ganz schlau...woher weiß ich was ich in die Orderselect alles reinpacken kann? Gibt es eine Übersicht auf Deutsch zu diesem Thema...obwohl ich denke vom Verständnis tut sich in beiden Sprachen nicht sonderlich viel... Immer wen ihc denke ich habe etwas geschafft tut sich was neues auf und ich habe nicht das Gefühl weiter zu kommen. Ich hatte mir vor einiger zeit das Buch "Expert Advisor Programming" geholt. Ein wenig komme ich damit zu recht, aber allein für die ersten beiden Kapitel...vll so 30 Seiten...habe ich schon 2 Monate gebraucht um vll mal wirklich ein wenig hinter die Thematik zu kommen und zu verstehen wie sich so ein Aufbau gliedern soll/muss... VG und Danke Marc
__________________
Heute Weizen, Abends Corn morgen fangen wir an von vorn... http://www.myfxbook.com/members/ciinvest |
|
|||
|
Eine letzte Frage habe ich aber noch...es werden nur 2 der ganzen Orders platziert...bzw ausgeführt...einmal die um 12 Uhr und die um 23 Uhr...das sind die beiden Verkauforders...nun aber...die Kauforders...ich habe spontan jetzt keinen Fehler bei Dir entdecken können^^
__________________
Heute Weizen, Abends Corn morgen fangen wir an von vorn... http://www.myfxbook.com/members/ciinvest |
|
|||
|
Noch eine Sache die ich gerne wissen wollte...beim Backtesting vom 01.01.2011 bis heute rechnet der gerade mal die ersten 3 Monate des Jahres 2011...gibt darüber hinaus keine weiteren Fehlerhinweise und weiter passiert nichts...auch die Margin wird nicht aufgefressen bzw hab ich eine offene Position im Markt...was kann das sein?
__________________
Heute Weizen, Abends Corn morgen fangen wir an von vorn... http://www.myfxbook.com/members/ciinvest |
|
||||
|
Zitat:
Eigentlich laufen alle Positionen wie eingestellt. Aber ein Fehler steckt noch drin Zitat:
gruß naranjoe |
|
||||
|
Hallo,
also eigentlich ist die beste Hilfe für alle mql4 funktionen im Metaeditor enthalten. In der MQL4-Reference steht alles was du wissen must. Um die Thematik besser zu verstehen gilt der Grundsatz "Learning bei doing". Du machst das schon ganz gut. Überlege dir eigene Projekte und versuche diese umzusetzen. Wenns mal gar nicht will, bekommst du hier sicherlich Hilfe. Gruß naranjoe |
![]() |
| Lesezeichen |
| Stichworte |
| close, mql4, order, order schliessen, programmierung, programmierung metatrader |
| Themen-Optionen | Thema durchsuchen |
| Ansicht | |
|
|