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

Danke vielmals für die Hilfe. Werd ich mir wohl Alles noch mal anschaun müssen.

Das Problem war wohl, dass OrderSend nie das Ticket zurück geliefert hat. Kam immer bloß 0. Aber dann les ich die geschlossenen Orders eben nicht aus. Geht auch ohne.

Die Lots werden jetzt erhöht, wenn ne entsprechende Order vom EA selber geschlossen wird. SL und TP sind nur noch zur Sicherheit drin, falls der PC kaputt geht oder der Server oder die Verbindung abbricht oder was auch immer schief geht.

Jedenfalls scheint der EA allgemein etwas langsam zu arbeiten. Schien irgendwie schon mal schneller zu sein. Woran kann das liegen? Wie kann man allgemein dafür sorgen, dass MT4 und EA möglichst schnell und effizient funktionieren?




#property copyright"LoSh_AlwInv_Dist_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
//================================================== ================================================== =========


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

input ENUM_TIMEFRAMES Timeframe=1;

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

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 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=23; // Zum Testen
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=23; // Zum Testen
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=1600; // 1600 testen

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

extern int TP=1800; // Zum Testen 1800

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

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

extern int Sl_MS=10;

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

extern string DOPtAB1="Distance to";
extern string DOPtAB2="Order Open Price";
extern string DOPtAB3="close Win-Order";

extern int Dist = 50; // Zum Testen 50

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


//================================================== ================================================== =========
// I N I T / D E I N I T
//================================================== ================================================== =========
int OnInit(){
ChartSetSymbolPeriod(0,Symbol(),Timeframe);
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);


//================================================== ================================================== =========
// 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);


//================================================== ================================================== =========
// 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;
for(int i=OrdersTotal()-1;i>=0;i--){
if(OrderSelect(i,SELECT_BY_POS)){
if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN &&OrderSymbol()==Symbol())BuyInv=true;}}


bool SelInv=false;
for(int j=OrdersTotal()-1;j>=0;j--){
if(OrderSelect(j,SELECT_BY_POS)){
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(open_Buy==true){

if(BuyInv==false){

if(IsTradeAllowed()==true)int TiBuy=OrderSend(Symbol(),OP_BUY,LotsBuy,Ask,Slippa ge,Buy_SL,Buy_TP,NULL,Buy_MN,NULL,Blue);

if( IsTradeContextBusy()==true )Sleep(Sl_MS);}}



if(open_Sell==true){

if(SelInv==false){

if(IsTradeAllowed()==true)int TiSel=OrderSend(Symbol(),OP_SELL,LotsSel,Bid,Slipp age,Sel_SL,Sel_TP,NULL,Sell_MN,NULL,Red);

if( IsTradeContextBusy()==true )Sleep(Sl_MS);}}

}


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


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


if(OrderType()==OP_BUY&&OrderMagicNumber()==Buy_MN &&OrderSymbol()==Symbol()){

if( ( CLbuy_D > OrderOpenPrice() ) ||(Close_all_Orders_after==true&&Hour()>=Close_aft er_Hour&&Minute()>=Close_after_Min) ){

if(IsTradeAllowed()==true)bool OCbuy=OrderClose(OrderTicket(),OrderLots(),Bid,Sli ppage,Red);

if( IsTradeContextBusy()==true )Sleep(Sl_MS);

LotsBuy = OrderLots() + LotsPlus;}}




if(OrderType()==OP_SELL&&OrderMagicNumber()==Sell_ MN&&OrderSymbol()==Symbol()){

if( ( CLsel_D < OrderOpenPrice() ) ||(Close_all_Orders_after==true&&Hour()>=Close_aft er_Hour&&Minute()>=Close_after_Min) ){

if(IsTradeAllowed()==true)bool OCsel=OrderClose(OrderTicket(),OrderLots(),Ask,Sli ppage,Red);

if( IsTradeContextBusy()==true )Sleep(Sl_MS);

LotsSel = OrderLots() + LotsPlus;}}


}}


//================================================== ================================================== =========
// 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_Dist_LP.mq4 (21,5 KB, 0x aufgerufen)