Thema: Hedge EA
Einzelnen Beitrag anzeigen
  #3 (permalink)  
Alt 24.04.20
MA-EA MA-EA ist offline
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 1.178
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Hat/te Jemand nen Demo-Konto bei ActivTrades? Ganz egal, wie ich den EA schreibe, es gibt immer wieder lange Pausen beim Order öffnen. Aber so richtig kann er ja nur funktionieren, wenn er ständig Long und Short im selben WP ist. Ich kanns mir eigentlich nur noch so erklären, dass ActivTrades doch irgendwelche Begrenzungen hat, was das Hedgen und Scalpen angeht.

Oder gibts doch irgendwelche Fehler im Code? Irgendwas, was zwar nicht wirklich falsch ist, aber eben trotzdem dafür sorgt, dass der EA nicht so läuft, wie er soll?
Code:
//=============================================================================================================
// P R O P E R T Y
//============================================================================================================*/
// #property strict
// #property strict sorgt anscheinend dafür, dass Kommentare im Konfig-Fenster im MT4 sichtbar sind.

#property copyright"LoSh_AlwInv_SLTP_LP.mq4"
#property copyright"daniel-rudloff@web.de"
//=============================================================================================================
// B E S C H R E I B U N G
//=============================================================================================================
extern string TOY="true = on / yes";
extern string FON="false = off / no";
//=============================================================================================================
// E I N S T E L L U N G E N
//=============================================================================================================

extern string MN="Magic Numbers";
extern int Buy_MN=2;
extern int Sell_MN=4;

//-----------------------------------------------------------------------------------------------------------*/

extern string OOO1="Open Orders Only";
extern string OOO2="from/till?";
extern string OOO3="(Server Time)";

input bool Open_Only_From_Till=true; //

extern int Open_From_Hour=7;
extern int Open_From_Min=0;

extern int Open_Till_Hour=17;
extern int Open_Till_Min=26; //

//-----------------------------------------------------------------------------------------------------------*/

extern string IOOFTF1="if";
extern string IOOFTF2="Open_Only_From_Till = false";
extern string IOOFTF3="Close_all_Orders_after";
extern string IOOFTF4="= false too";

extern string CAOTOC1="Close all Orders after";
extern string CAOTOC2="(Server Time)";

extern bool Close_all_Orders_after=true;

extern int Close_after_Hour=17;
extern int Close_after_Min=27;

//-----------------------------------------------------------------------------------------------------------*/

extern int Slippage=99999999;

//-----------------------------------------------------------------------------------------------------------*/


extern double LotsBuy=0.01;
extern double LotsSel=0.01;


extern string esLPOCP1="Lots Buy/Sell";
extern string esLPOCP2="+ LotsPlus";
extern string esLPOCP3="if Order close";
extern string esLPOCP4="with Profit";

extern double LotsPlus=0.01;


extern string esOLLPOLP1="OrderLots of";
extern string esOLLPOLP2="last Profit Order";
extern string esOLLPOLP3="+ LotsPlus?";

extern bool OLPO_LP=false; // Zum Testen aus


//-----------------------------------------------------------------------------------------------------------*/

extern int SL=1600; // 1600 testen

//-----------------------------------------------------------------------------------------------------------*/

extern int TP=50; // Zum Testen 50

//=============================================================================================================
// D E K L A R A T I O N E N
//=============================================================================================================

bool OMbuy,OMsel,OCbuy,OCsel;

double Buy_SL,Sel_SL,Buy_TP,Sel_TP;

int i,j,TiBuy,TiSel;

//=============================================================================================================
// I N I T / D E I N I T
//=============================================================================================================
int OnInit(){
  return(0);}
void OnDeinit(const int reason){
  return;}
//=============================================================================================================
// E A   F U N K T I O N E N   S T A R T
//=============================================================================================================
int start(){
//=============================================================================================================
// O P E N   T I M E
//=============================================================================================================


bool RT=false; // RT = Right Time
if( (Open_Only_From_Till==false) || (Open_Only_From_Till==true&&Hour()>=Open_From_Hour&&Minute()>=Open_From_Min&&Hour()<=Open_Till_Hour&&Minute()<=Open_Till_Min) )RT=true;


//=============================================================================================================
// L O T S
//=============================================================================================================


double Min_L=MarketInfo(Symbol(),MODE_MINLOT);
double Max_L=MarketInfo(Symbol(),MODE_MAXLOT);

if(LotsBuy<Min_L)LotsBuy=Min_L;
if(LotsSel<Min_L)LotsSel=Min_L;

if(LotsBuy>Max_L)LotsBuy=Max_L;
if(LotsSel>Max_L)LotsSel=Max_L;


//=============================================================================================================
// S T O P   L O S S
//=============================================================================================================


//SL auf 0 stellen, wenn oben <1,
//um irgendwelche Missverständnisse zu vermeiden.
if(SL<1){
  Buy_SL=0.0;
  Sel_SL=0.0;}

  else{
    Buy_SL=NormalizeDouble(Ask-SL*_Point,_Digits);
    Sel_SL=NormalizeDouble(Bid+SL*_Point,_Digits);}

//SL genauso groß wie Minstoplevels machen, wenn er kleiner ist:
double MSL=MarketInfo(Symbol(),MODE_STOPLEVEL);
if(Buy_SL<MSL)Buy_SL=MSL;
if(Sel_SL<MSL)Sel_SL=MSL;


//=============================================================================================================
// T A K E   P R O F I T
//=============================================================================================================


//TP auf 0 stellen, wenn oben <1,
//um irgendwelche Missverständnisse zu vermeiden.
if(TP<1){
  Buy_TP=0.0;
  Sel_TP=0.0;}

  else{
    Buy_TP=NormalizeDouble(Ask+TP*_Point,_Digits);
    Sel_TP=NormalizeDouble(Bid-TP*_Point,_Digits);}


//=============================================================================================================
// P R U E F E N   O B   O R D E R S   G E O E F F N E T   S I N D
//=============================================================================================================


bool BuyInv=false;
bool SelInv=false;


for(i=OrdersTotal()-1;i>=0;i--){
  if(OrderSelect(i,SELECT_BY_POS)){
    if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN&&OrderSymbol()==Symbol())BuyInv=true;
    if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MN&&OrderSymbol()==Symbol())SelInv=true;}}


//=============================================================================================================
// O P E N   O R D E R S
//=============================================================================================================


if( RT==true ){


  if( BuyInv==false && IsTradeAllowed()==true ){
  
    TiBuy=OrderSend(Symbol(),OP_BUY,LotsBuy,Ask,Slippage,Buy_SL,Buy_TP,NULL,Buy_MN,0,Blue);
    
    return(TiBuy);}



  if( SelInv==false && IsTradeAllowed()==true ){
  
    TiSel=OrderSend(Symbol(),OP_SELL,LotsSel,Bid,Slippage,Sel_SL,Sel_TP,NULL,Sell_MN,0,Red);
    
    return(TiSel);}

}


//=============================================================================================================
// O R D E R   L O T S   E R H Ö H E N
//=============================================================================================================


if(OrderSelect(TiBuy,SELECT_BY_TICKET,MODE_HISTORY)){


  if(OrderProfit()>0.0){


    if(OLPO_LP==false)LotsBuy = LotsBuy + LotsPlus;
    
    if(OLPO_LP==true)LotsBuy = OrderLots() + LotsPlus;}

}




if(OrderSelect(TiSel,SELECT_BY_TICKET,MODE_HISTORY)){


  if(OrderProfit()>0.0){


    if(OLPO_LP==false)LotsSel = LotsSel + LotsPlus;
  
    if(OLPO_LP==true)LotsSel = OrderLots() + LotsPlus;}

}


//=============================================================================================================
// C L O S E   O R D E R S
//=============================================================================================================


for(j=OrdersTotal()-1;j>=0;j--){
  if(OrderSelect(j,SELECT_BY_POS)){


    if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN&&OrderSymbol()==Symbol()){
      
      if(Close_all_Orders_after==true&&Hour()>=Close_after_Hour&&Minute()>=Close_after_Min){
      
        if(IsTradeAllowed()==true)OCbuy=OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Black);}}



    if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MN&&OrderSymbol()==Symbol()){
      
      if(Close_all_Orders_after==true&&Hour()>=Close_after_Hour&&Minute()>=Close_after_Min){

        if(IsTradeAllowed()==true)OCsel=OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Orange);}}

}}


//=============================================================================================================
// E A   F U N K T I O N E N   B E E N D E N
//=============================================================================================================
return(0);}
Angehängte Dateien
Dateityp: mq4 LoSh_AlwInv_SLTP_LP.mq4 (19,3 KB, 2x aufgerufen)