Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 07.04.19
statstrader statstrader ist offline
Neues Mitglied
 
Registriert seit: Apr 2019
Beiträge: 1
statstrader befindet sich auf einem aufstrebenden Ast
Standard OrderClose Problem + Wochentag Filter

Liebe Forum Mitglieder,

ich bin dabei MQL4 zu lernen und schreibe gerade meinen ersten Expert Advisor. Nachdem ich keinen Programmier Background habe und mich mit Youtube, Google, MQL4 docs etc. ein wenig eingearbeitet habe, stehe ich nun vor folgendem Problem und bitte euch um Hilfe.

Trade Setup:
--------------
Eröffne Freitags eine Buy Order bei Market Open, wenn der Open der D1 Candle des Vortage und der Open des heutigen Tages über dem EMA (x) liegt und schließe die Order am Montag beim Open der D1 Candle.

Da ich diesen Expert Advisor verschieden einstellen möchte habe ich entsprechend einige inputs für die wichtigsten Werte definiert.

Fehler:
-------
Die Order wird laut Journal im Strategy Tester ohne Rücksicht auf den Weekday Filter sofort ausgeführt und wieder geschlossen.

Im Journal steht:

- unknown ticket #1 for order close function
- Order Close Error 4108

Bitte:
------
Ich wäre dankbar für jeden Input.

Der Code:
-----------

#property strict

int MagicNumber = 10000;

// Global external variables
//--------------------------


input int TradeOpenWeekday = 5; //TradeOpenDay of the week
input int TradeCloseWeekday = 1; // TradeCloseDay of the week
input int EMAperiod = 10; //EMA period
input double SL_ATR_Multi = 1.00; //SL_ATR_Multiplikator
input double TP_ATR_Multi = 3.00; //TP_ATR_Multiplikator
input double LotSize = 0.01; //Lotsize Traded
input int MaxSlippage = 10; //Maximum Slippage

//Global ínternal variables
//-------------------------
double BarOpen = iOpen(NULL,PERIOD_D1,0);
double BarClosePreviousCandle = iClose(NULL,PERIOD_D1,1);

double StopLossCalculation = NormalizeDouble((iATR(NULL,0,10,1)*SL_ATR_Multi),D igits);
double StopLossDistanceFromOpen = (BarOpen - StopLossCalculation);

double TakeProfitCalculation = NormalizeDouble((iATR(NULL,0,10,1)*TP_ATR_Multi),D igits);
double TakeProfitDistanceFromOpen = (BarOpen + TakeProfitCalculation);



// LONG - Trade Control Parameters + Ticket Numbers
// -----------------------------------------

bool LongTrade = false;
int BuyTicketNumber = OrderSend (Symbol(),OP_BUY,LotSize,Ask,MaxSlippage,StopLossD istanceFromOpen,TakeProfitDistanceFromOpen,"+++ GOLD_FR_EMA0_MO +++",MagicNumber,0,clrGreen);
bool BuyOrderSelected = OrderSelect(BuyTicketNumber,SELECT_BY_TICKET);
bool CloseLongTrade = OrderClose (BuyTicketNumber,LotSize,Bid,MaxSlippage,clrBlue);


// Trade Entry Indicators
// -----------------------
double EMA = NormalizeDouble ((iMA(NULL,0,EMAperiod,0,MODE_EMA,PRICE_CLOSE,1)), Digits);




//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{




return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{




}


//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()

{

//---------------------
//Check for Trade Setup
//---------------------

if ((BarClosePreviousCandle > EMA) && (BarOpen > EMA) && (DayOfWeek() == TradeOpenWeekday))

{
LongTrade = true;
}

else LongTrade = false;


//----------------
// Place Buy Order
//----------------

if (LongTrade == true)

{
BuyTicketNumber = OrderSend (_Symbol,OP_BUY,LotSize,Ask,MaxSlippage,StopLossDi stanceFromOpen,TakeProfitDistanceFromOpen,"+++ GOLD_FR_EMA0_MO +++",MagicNumber,0,clrGreen);
}

//-----------------
// Select Buy Order
//-----------------

if ((BuyTicketNumber >0) && (DayOfWeek() == TradeCloseWeekday))

{
BuyOrderSelected = true;
}

else BuyOrderSelected = false;

//----------------
// Close Buy Order
//----------------

if (BuyOrderSelected == true)

{
CloseLongTrade = true;
}


if (CloseLongTrade == true)

{

CloseLongTrade = OrderClose (BuyTicketNumber,LotSize,Bid,MaxSlippage,clrBlue);

}

}
//+------------------------------------------------------------------+