Einzelnen Beitrag anzeigen
  #14 (permalink)  
Alt 17.05.16
oli44 oli44 ist offline
Neues Mitglied
 
Registriert seit: Nov 2012
Beiträge: 17
oli44 befindet sich auf einem aufstrebenden Ast
Standard

Habe mir mal eben diesen Ansatz unter Verwendung eines "Arrays" überlegt:

string BasketArray[6] = {"EURUSD", "USDCHF", "NZDUSD", "GBPUSD", "USDCAD", "AUDUSD"};

/////////// Begin of trading block /////////

// EA Trade Logik ...

for(int Index1 = 0, Index2 = 3; Index1 < 3; Index1++, Index2++) // Durchlaufe BasketPool
{
for(int Counter = 0; Counter < OrdersTotal(); Counter++) // Durchlaufe OrderPool
{
Selected = false;
while(Selected == false)
{
Selected = OrderSelect(Counter,SELECT_BY_POS);
}

if(OrderSymbol() == BasketArray[Index1]) {OrderProfit_1 = OrderProfit() - ( OrderCommission() + OrderSwap() ); OrderTicketNumber1 = OrderTicket(); CurrencySymbol1 = OrderSymbol();}
if(OrderSymbol() == BasketArray[Index2]) {OrderProfit_2 = OrderProfit() - ( OrderCommission() + OrderSwap() ); OrderTicketNumber2 = OrderTicket(); CurrencySymbol2 = OrderSymbol();}
}

if(OrderProfit_1 + OrderProfit_2 >= CashWin || OrderProfit_1 + OrderProfit_2 <= CashLoss)
{
// Basket wird nun geschlossen und danach sofort ein neues gleichwertiges Basket eröffnet
BasketCount++;
if(OrderProfit_1 + OrderProfit_2 >= CashWin) {WinBasketCount++;CashWin += 0.1;CashLoss += 0.1; if(CashLoss >= -0.1){CashLoss = -1.0;}} // Bei Gewinn ziehen wir unseren CashLoss (um x Cent) zusammen (max. bis -0.1 Cent)
if(OrderProfit_1 + OrderProfit_2 <= CashLoss) {LossBasketCount++;CashWin -= 0.1;CashLoss -= 0.1;} // Bei Verlust weiten wir unseren CashLoss (um x Cent) aus

Print("CashLoss = ",CashLoss);
Print("CashWin = ",CashWin);

Selected = false;
while(Selected == false)
{
OrderSelect(OrderTicketNumber1,SELECT_BY_TICKET);
}
// Unterscheide ob Position eine buy oder sell Order ist
if(OrderType() == OP_BUY)
{
Closed = false;
while(Closed == false)
{
Closed = CloseBuyOrder(CurrencySymbol1,OrderTicketNumber1,S lippage);
}

if(Closed)
{
// Neue identische buy Order wird eröffnet
Opened = false;
while(Opened == false)
{
Opened = OpenBuyOrder(CurrencySymbol1,LotSize,Slippage,Magi cNumber);
}
}
}

else if(OrderType() == OP_SELL)
{
Closed = false;
while(Closed == false)
{
Closed = CloseSellOrder(CurrencySymbol1,OrderTicketNumber1, Slippage);
}

if(Closed)
{
// Neue identische sell Order wird eröffnet
Opened = false;
while(Opened == false)
{
Opened = OpenSellOrder(CurrencySymbol1,LotSize,Slippage,Mag icNumber);
}
}
}

Selected = false;
while(Selected == false)
{
OrderSelect(OrderTicketNumber2,SELECT_BY_TICKET);
}
// Unterscheide ob Position eine buy oder sell Order ist
if(OrderType() == OP_BUY)
{
Closed = false;
while(Closed == false)
{
Closed = CloseBuyOrder(CurrencySymbol2,OrderTicketNumber2,S lippage);
}

if(Closed)
{
// Neue identische buy Order wird eröffnet
Opened = false;
while(Opened == false)
{
Opened = OpenBuyOrder(CurrencySymbol2,LotSize,Slippage,Magi cNumber);
}
}
}

else if(OrderType() == OP_SELL)
{
Closed = false;
while(Closed == false)
{
Closed = CloseSellOrder(CurrencySymbol2,OrderTicketNumber2, Slippage);
}

if(Closed)
{
// Neue identische sell Order wird eröffnet
Opened = false;
while(Opened == false)
{
Opened = OpenSellOrder(CurrencySymbol2,LotSize,Slippage,Mag icNumber);
}
}
}
}
}
} // End -- void OnTimer()