Thema: Hedge EA
Einzelnen Beitrag anzeigen
  #38 (permalink)  
Alt 13.05.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

Da ist wohl irgendwas schief gegangen.

Muss man diese ganzen Fehlermeldungen extra im EA deklarieren/abfragen? Die erscheinen doch auch so im Journal oder unter Experten. Oder nicht?

Er scheint wieder nicht durchgehend zu öffnen. Liegt das vielleicht an der Schreibweise des EAs? Verhakt der sich da vielleicht irgendwo oder irgendwie? Oder braucht für irgendwas länger, wenn irgendwas nicht optimal geschrieben ist? Liegt das vielleicht irgendwie an IsTradeAllowed() oder so?

Ist hier Jemand bei ActivTrades? Kann er dort Scalpen, vor allem Hedgen wie er will? Oder dauerts bei Ihm teilweise auch lange, bis die nächste Order geöffnet wird?

Kennt hier Jemand nen Forex-Broker, bei dem man ohne Probleme hedgen kann, ohne irgendwelche Unterbrechungen?
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"PrintVers_LoSh_AlwInv_Dist_lL.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 OPORTY="Open Order Types";
input bool open_Buy=true;
input bool open_Sell=true;

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

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

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

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

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 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/Lots Sell";
extern string esLPOCP2="+ LotsPlus";
extern string esLPOCP3="if Order close";
extern string esLPOCP4="with Profit";

extern double LotsPlus=0.01; //

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

extern int SL=1800; // 1800 testen

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

extern int TP=2000; // Zum Testen 2000

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

extern string esIITCBSMS1="if IsTradeContexBusy()";
extern string esIITCBSMS2="sleep Milli Seconds";

extern int Sl_MS=25;

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

extern string esDOPtAB1="Distance to";
extern string esDOPtAB2="Order Open Price";
extern string esDOPtAB3="close Win-Order";
extern string esDOPtAB4="If close with Profit";
extern string esDOPtAB5="Lots Buy + Lots Sel /";
extern string esDOPtAB6="Lots Sel + Lots Buy";

extern int Dist = 100; // Zum Testen 100. Weniger als 50 ist wahrscheinlich nicht ausreichend?

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


//=============================================================================================================
// I N I T / D E I N I T
//=============================================================================================================
int init(){
  return(NULL);}
int deinit(){
  return(NULL);}
//=============================================================================================================
// E A   F U N K T I O N E N   S T A R T
//=============================================================================================================int 
int start(){
//=============================================================================================================
// 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;
  LotsPlus=0.0;}

if(LotsSel>=Max_L){
  LotsSel=Max_L;
  LotsPlus=0.0;}


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


//SL auf 0 stellen, wenn oben <1,
//um irgendwelche Missverständnisse zu vermeiden.
if(SL<1){
  double Buy_SL=0.0;
  double 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){
  double Buy_TP=0.0;
  double Sel_TP=0.0;}

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


//=============================================================================================================
// C L O S E   D I S T A N C E   B E R E C H N U N G
//=============================================================================================================


double CLbuy_D = NormalizeDouble( Bid - Dist *_Point,_Digits);

double CLsel_D = NormalizeDouble( Ask + Dist *_Point,_Digits);


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


if(Hour()>=Open_From_Hour&&Minute()>=Open_From_Min&&Hour()<=Open_Till_Hour&&Minute()<=Open_Till_Min){


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


  if(open_Buy==true){

    bool LO=false;
    
    for(int i=OrdersTotal()-1;i>=0;i--){
      if(OrderSelect(i,SELECT_BY_POS)){
        if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN&&OrderSymbol()==Symbol()){
        LO=true;
        Print( "-Opening Buy Order Selected:" , "-Long?:",LO , "-OrderTyp:",OrderType() , "-OrderMN:",OrderMagicNumber() , "-BuyMN:",Buy_MN , "-OrderSymbol:",OrderSymbol() , "-Symbol:",Symbol() );}}}


        if(LO==false){

          if(IsTradeAllowed()==true){
            OrderSend(Symbol(),OP_BUY,LotsBuy,Ask,Slippage,Buy_SL,Buy_TP,NULL,Buy_MN,Blue);
            Print( "-Opening Buy:" , "-Long?:",LO , "-IsTradeAllowed:",IsTradeAllowed() , "-Symbol:",Symbol() , "Order Typ:",OrderType() , "-LotsBuy:",LotsBuy, "-Ask:",Ask, "-Slippage:",Slippage );}

          if(IsTradeAllowed()==false||IsTradeContextBusy()){
            Print( "-Opening Buy ITCB:",IsTradeContextBusy() , "-Sleep:",Sl_MS );
            Sleep(Sl_MS);
            Print( "-Opening Buy ITCB Long?:",LO );}}

}


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


  if( open_Sell==true ){

    bool SH=false;
    
    for(int j=OrdersTotal()-1;j>=0;j--){
      if(OrderSelect(j,SELECT_BY_POS)){
        if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MN&&OrderSymbol()==Symbol()){
        SH=true;
        Print( "-Opening Sell Order Selected:" , "-Short?:",SH , "-Order Typ:",OrderType() , "-OrderMN:",OrderMagicNumber() , "-Sell MN:",Sell_MN , "-OrderSymbol:",OrderSymbol() , "-Symbol:",Symbol() );}}}


        if(SH==false){
        
          if(IsTradeAllowed()==true){
          OrderSend(Symbol(),OP_SELL,LotsSel,Bid,Slippage,Sel_SL,Sel_TP,NULL,Sell_MN,Blue);
          Print( "-Opening Sell:" , "-Short?:",SH , "-IsTradeAllowed:",IsTradeAllowed() , "-Symbol:",Symbol(), "Order Typ:",OP_SELL , "-LotsSel",LotsSel , "-Bid:",Bid );}

          if(IsTradeAllowed()==false||IsTradeContextBusy()){
            Print( "-Opening Sel ITCB:",IsTradeContextBusy() , "-Sleep:",Sl_MS );
            Sleep(Sl_MS);
            Print( "-Opening Sel ITCB Long?:",LO );}}

}

}


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


if(open_Buy==true){
  for(int k=OrdersTotal()-1;k>=0;k--){
    if(OrderSelect(k,SELECT_BY_POS)){
      if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN&&OrderSymbol()==Symbol()){
      Print( "-Closing Buy Order Selected:" , "-Long?:",LO , "-Order Typ:",OrderType() , "-OrderMN:",OrderMagicNumber() , "-Buy MN:",Buy_MN , "-OrderSymbol:",OrderSymbol() , "-Symbol:",Symbol() );

        if( ( CLbuy_D > OrderOpenPrice() ) ||(Close_all_Orders_after==true&&Hour()>=Close_after_Hour&&Minute()>=Close_after_Min) ){
        Print( "-Closing Buy:" , "-Close Buy Dist:",CLbuy_D , "-Buy Order Open Price:",OrderOpenPrice() );

          if(IsTradeAllowed()==true){
            OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Red);
            Print( "-Closing Buy:" , "-Long?:",LO , "-Symbol:",Symbol(), "-Lots:",OrderLots() , "-Bid:",Bid , "-Slippage:",Slippage );}

            if(IsTradeAllowed()==false||IsTradeContextBusy()){
            Print( "-Closing Buy ITCB:",IsTradeContextBusy() , "-Sleep:",Sl_MS );
            Sleep(Sl_MS);
            Print( "-Closing Buy Long?:",LO );}

            LotsBuy = OrderLots() + LotsPlus;
            Print( "-Closing Buy:" , "-Order Lots Buy=",OrderLots() , "-Lots PLus=",LotsPlus , "-new LotsBuy=",LotsBuy );

            if( LotsBuy <= LotsSel ){
            Print( "-Closing Buy:" , "-(old) Lots Buy=",LotsBuy , "Lots Sel=",LotsSel );
          
            LotsBuy = LotsSel + LotsBuy;
            Print( "-Closing Buy:" , "-Lots Sel=",LotsSel , "-new Lots Buy=",LotsBuy );}

} } } } }


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


if(open_Sell==true){
  for(int l=OrdersTotal()-1;l>=0;l--){
    if(OrderSelect(l,SELECT_BY_POS)){
      if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_MN&&OrderSymbol()==Symbol()){
      Print( "-Closing Sel Order Select:" , "-Short?:",SH , "-Order Typ:",OrderType() , "-OrderMN:",OrderMagicNumber() , "-Sel MN:",Sell_MN , "-OrderSymbol:",OrderSymbol() , "-Symbol:",Symbol() );
      
        if( ( CLsel_D < OrderOpenPrice() ) ||(Close_all_Orders_after==true&&Hour()>=Close_after_Hour&&Minute()>=Close_after_Min) ){
        Print( "-Closing Sel Dist:", CLsel_D , "-Order Open Price:",OrderOpenPrice() );

          if(IsTradeAllowed()==true){
            OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Red);
            Print( "-Closing Sel:" , "-Short?:",SH , "-Symbol:",Symbol(), "-Lots:",OrderLots() , "-Ask:",Ask , "-Slippage:",Slippage );}

          if(IsTradeAllowed()==false||IsTradeContextBusy()){
            Print( "-Closing Sel ITCB:",IsTradeContextBusy() , "-Sleep:",Sl_MS );
            Sleep(Sl_MS);
            Print( "-Short?:",SH );}
        
            LotsSel = OrderLots() + LotsPlus;
            Print( "-Closing Sel:" , "-last Lots Sel=",OrderLots() , "-Lots PLus=",LotsPlus , "-new LotsSel=",LotsSel );

            if( LotsSel <= LotsBuy ){
            Print( "-Closing Sel:" , "-(old) Lots Sel=",LotsSel , "Lots Buy=",LotsBuy );

            LotsSel = LotsBuy + LotsSel;
            Print( "-Closing Sel:" , "-Lots Buy=",LotsBuy , "-new Lots Sel=",LotsSel );}


} } } } }


//=============================================================================================================
// E A   F U N K T I O N E N   B E E N D E N
//=============================================================================================================
return(NULL);}
Angehängte Dateien
Dateityp: mq4 PrintVers_LoSh_AlwInv_Dist_lL.mq4 (29,0 KB, 1x aufgerufen)