Знатоки програмирования подскажите.....
Кнопка "Пуск" > Программы > Metа Trader > MetaEditor > Главное меню > File > New > Custom Indicator..., Expert Advisor...
С правой стороны редактора вкладка Dictionary с описанием языка MQL4
Знатоки програмирования подскажите.....
Кнопка "Пуск" > Программы > Metа Trader > MetaEditor > Главное меню > File > New > Custom Indicator..., Expert Advisor...
С правой стороны редактора вкладка Dictionary с описанием языка MQL4
Правельно говорят ответ программиста всегда точен, но зачастую бесполезен.
Знатоки програмирования подскажите.....
Кнопка "Пуск" > Программы > Metа Trader > MetaEditor > Главное меню > File > New > Custom Indicator..., Expert Advisor...
С правой стороны редактора вкладка Dictionary с описанием языка MQL4
Для того что бы писать надо хотябы немного разбираться в програмировании......
А я в этом полный зеро ....... Самое сложное что я програмировал это системки для омеги ресетч (там все очень просто)....... про чем это было жутко давно.
Ник вызывает подозрения.
Lohinson, а как дельта считается?
Ник вызывает подозрения.
Ник с историей....http://konkop.narod.ru/renko.htm
Lohinson, а как дельта считается?
дельта - это простое не расчитываемое число, получаемое в результате оптимизации, равное количеству пипсов (+/-) приращения к максимальному/минимальному H/L из 3х баров
дельта - для лонга и шорта одинакова .....
дельта - единственный оптимизируемый параметр
Ник вызывает подозрения.
Ник с историей....http://konkop.narod.ru/renko.htm
Lohinson, а как дельта считается?
дельта - это простое не расчитываемое число, получаемое в результате оптимизации, равное количеству пипсов (+/-) приращения к максимальному/минимальному H/L из 3х баров
дельта - для лонга и шорта одинакова .....
дельта - единственный оптимизируемый параметр
Ты знаешь, я тебе как программист скажу - эта фигня будет отлично сливать депозит.
вот эта конструкция и то больше заработает:
if(true) OpenBuy(); if(true) OpenSell();
хотя нечто подобное уже не раз делалось на МТ4, вот например этот советник очень похож на то что ты описываешь, но посложнее конечно, и прибыль реально приносит:
работают на EURUSD H1.
//+------------------------------------------------------------------+ //+------------------------------------------------------------------+ #property copyright "Dan" #property link "3172552@gmail.com" #include <stdlib.mqh> #define MN_8 8 #define MN_12 12 //---- input parameters extern int Hours2Check= 9; //9 //14 //15 extern int CloseHour= 9; //9 //9 //9 extern int DaysMode= 1; //1 //2 //2 extern int Days2Check= 9;//14 //7 //14 //10 extern int CheckMode= 1; //2 //1 //2 extern double LossK= 2; //1 //2 //0.5 extern double ChannelK= 1.5; //0.5 //1.5 //0.5 extern int CheckHour_8= 8; //8 //8 //8 extern double ProfitK_8= 2; //1 //2 //1 extern double OffsetK_8= 2; //1 //2.5 //1.5 extern int CheckHour_12= 12; //12 //12 //12 extern double ProfitK_12= 3; //0.5 //4 //0.5 extern double OffsetK_12= 2.5; //1 //2.5 //1 extern int MarginPercent= 20; extern bool UseMM= true; extern int TradesPerDayAllowed= 1; ////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// int MaxSystemDD=200; //here You have to insert max dd without MM in pips int SystemTrustK=1; int MaxDD_Allowed=10; double Lots=0.1; int LatestOpenHour=22; int MaxTries=10; int PointPrice=10; double ISK=1.5; ///////////////////////////////////////////////////// int Pause; int err; int try; int ticket; bool close; int i; int OpenDay; int p; int InsuranceStop; int loss; int D2Ch; int pp_8; int profit_8; int offset_8; int avrange_8; int CheckDay_8; int pp_12; int profit_12; int offset_12; int avrange_12; int CheckDay_12; double sellprice_8; double buyprice_8; double daj_8; double hh_8; double ll_8; double totalrange_8; double channel_8; double sellprice_12; double buyprice_12; double daj_12; double hh_12; double ll_12; double totalrange_12; double channel_12; //////////////////////////////////////////////////////////// //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- D2Ch=Days2Check; //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } ///////////////////////////////////////////////////////////////////// void Levels_Defining_12() { pp_12=(((CheckHour_12-CheckHour_8)*60)/Period()); hh_12=High[Highest(NULL,0,MODE_HIGH,pp_12,1)]; ll_12=Low[Lowest(NULL,0,MODE_LOW,pp_12,1)]; p=((24*60)/Period()); totalrange_12=0; channel_12=hh_12-ll_12; if (CheckMode==1) { for(i=1;i<=Days2Check;i++) { daj_12=(High[Highest(NULL,0,MODE_HIGH,p,p*(i-1)+1)] -Low[Lowest(NULL,0,MODE_LOW,p,p*(i-1)+1)]); totalrange_12=totalrange_12+daj_12; } } if (CheckMode==2) { for( i=1;i<=Days2Check;i++) { daj_12=MathAbs(Close[p*i+pp_12]- Close[p*(i-1)+pp_12]); totalrange_12=totalrange_12+daj_12; } } avrange_12=MathRound((totalrange_12/Days2Check)/Point); offset_12=MathRound(avrange_12/OffsetK_12); sellprice_12=NormalizeDouble(ll_12-offset_12*Point,4); buyprice_12=NormalizeDouble(hh_12+offset_12*Point,4); return; } //*/* ///////////////////////////////////////////////////////////// void Levels_Defining_8() { pp_8=((Hours2Check*60)/Period()); hh_8=High[Highest(NULL,0,MODE_HIGH,pp_8,1)]; ll_8=Low[Lowest(NULL,0,MODE_LOW,pp_8,1)]; p=((24*60)/Period()); totalrange_8=0; channel_8=hh_8-ll_8; if (CheckMode==1) { for(i=1;i<=Days2Check;i++) { daj_8=(High[Highest(NULL,0,MODE_HIGH,p,p*(i-1)+1)] -Low[Lowest(NULL,0,MODE_LOW,p,p*(i-1)+1)]); totalrange_8=totalrange_8+daj_8; } } if (CheckMode==2) { for( i=1;i<=Days2Check;i++) { daj_8=MathAbs(Close[p*i+pp_8]- Close[p*(i-1)+pp_8]); totalrange_8=totalrange_8+daj_8; } } avrange_8=MathRound((totalrange_8/Days2Check)/Point); offset_8=MathRound(avrange_8/OffsetK_8); sellprice_8=NormalizeDouble(ll_8-offset_8*Point,4); buyprice_8=NormalizeDouble(hh_8+offset_8*Point,4); return; } //*/* /////////////////////////////////////////////////////////////_8 void Close_by_Closetime() { for(i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if((OrderMagicNumber()!=MN_8 && OrderMagicNumber()!=MN_12) || OrderSymbol()!=Symbol() ) continue; if (OrderType()==OP_BUY) { for(int try=1;try<=MaxTries;try++) { while (!IsTradeAllowed()) Sleep(5000); close=false; RefreshRates(); close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,4),3,White); Sleep(Pause); if (close){Pause=1000;break;} else { err=GetLastError(); Print("OrderClose failed with error #",err," : ",ErrorDescription(err),"Trying Again #",try); Pause=Pause*2; if (try==MaxTries) { Pause=1000; Print("Warning!!!Last try failed!"); SendMail("Warning!!!Last try failed! ",OrderType()+" by "+OrderClosePrice()+" Cloing Failed!"); break; } } } } if (OrderType()==OP_SELL) { for(try=1;try<=MaxTries;try++) { while (!IsTradeAllowed()) Sleep(5000); close=false; RefreshRates(); close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,4),3,White); Sleep(Pause); if (close){Pause=1000;break;} else { err=GetLastError(); Print("OrderClose failed with error #",err," : ",ErrorDescription(err),"Trying Again #",try); Pause=Pause*2; if (try==MaxTries) { Pause=1000; Print("Warning!!!Last try failed!"); SendMail("Warning!!!Last try failed! ",OrderType()+" by "+OrderClosePrice()+" Cloing Failed!"); break; } } } } } } ///////////////////////////////////////////////////////////////*/ /////////////////////////////////////////////////////////////// void Close_by_Stops_8() { for(i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=MN_8 || OrderSymbol()!=Symbol()) continue; if ((OrderType()==OP_BUY) && (((Close[1]-NormalizeDouble(OrderOpenPrice(),4))>=profit_8*Point) || ((NormalizeDouble(OrderOpenPrice(),4)-Close[1])>=loss*Point))) { for(int try=1;try<=MaxTries;try++) { while (!IsTradeAllowed()) Sleep(5000); close=false; RefreshRates(); close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,4),3,White); Sleep(Pause); if (close){Pause=1000;break;} else { err=GetLastError(); Print("OrderClose failed with error #",err," : ",ErrorDescription(err),"Trying Again #",try); Pause=Pause*2; if (try==MaxTries) { Pause=1000; Print("Warning!!!Last try failed!"); SendMail("Warning!!!Last try failed! ",OrderType()+" by "+OrderClosePrice()+" Cloing Failed!"); break; } } } } if ((OrderType()==OP_SELL) && (((Close[1]-NormalizeDouble(OrderOpenPrice(),4))>=loss*Point) || ((NormalizeDouble(OrderOpenPrice(),4)-Close[1])>=profit_8*Point))) { for(try=1;try<=MaxTries;try++) { while (!IsTradeAllowed()) Sleep(5000); close=false; RefreshRates(); close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,4),3,White); Sleep(Pause); if (close){Pause=1000;break;} else { err=GetLastError(); Print("OrderClose failed with error #",err," : ",ErrorDescription(err),"Trying Again #",try); Pause=Pause*2; if (try==MaxTries) { Pause=1000; Print("Warning!!!Last try failed!"); SendMail("Warning!!!Last try failed! ",OrderType()+" by "+OrderClosePrice()+" Cloing Failed!"); break; } } } } } } //////////////////////////////////////////////////*/ void Close_by_Stops_12() { for(i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=MN_12 || OrderSymbol()!=Symbol()) continue; if ((OrderType()==OP_BUY) && (((Close[1]-NormalizeDouble(OrderOpenPrice(),4))>=profit_12*Point) || ((NormalizeDouble(OrderOpenPrice(),4)-Close[1])>=loss*Point))) { for(int try=1;try<=MaxTries;try++) { while (!IsTradeAllowed()) Sleep(5000); close=false; RefreshRates(); close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,4),3,White); Sleep(Pause); if (close){Pause=1000;break;} else { err=GetLastError(); Print("OrderClose failed with error #",err," : ",ErrorDescription(err),"Trying Again #",try); Pause=Pause*2; if (try==MaxTries) { Pause=1000; Print("Warning!!!Last try failed!"); SendMail("Warning!!!Last try failed! ",OrderType()+" by "+OrderClosePrice()+" Cloing Failed!"); break; } } } } if ((OrderType()==OP_SELL) && (((Close[1]-NormalizeDouble(OrderOpenPrice(),4))>=loss*Point) || ((NormalizeDouble(OrderOpenPrice(),4)-Close[1])>=profit_12*Point))) { for(try=1;try<=MaxTries;try++) { while (!IsTradeAllowed()) Sleep(5000); close=false; RefreshRates(); close=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,4),3,White); Sleep(Pause); if (close){Pause=1000;break;} else { err=GetLastError(); Print("OrderClose failed with error #",err," : ",ErrorDescription(err),"Trying Again #",try); Pause=Pause*2; if (try==MaxTries) { Pause=1000; Print("Warning!!!Last try failed!"); SendMail("Warning!!!Last try failed! ",OrderType()+" by "+OrderClosePrice()+" Cloing Failed!"); break; } } } } } } //////////////////////////////////////////////////*/ double LotSizeCounting(int OpTime){ Lots=0.1; if (UseMM==true){ if (OpTime==8){ Lots=NormalizeDouble(((AccountFreeMargin()/100000)*MarginPercent),1);Print(Lots); } if (OpTime==12){ Lots=NormalizeDouble((AccountFreeMargin( )/100000)*MarginPercent,1); } if (Lots<0.1){ Print("Too risky Trade! Add some money to account"); SendMail("Too risky Trade! Add some money to account","Too risky Trade! Add some money to account"); Lots=0.1; } if (Lots>10000){ Print("Too big Lot ",Lots); SendMail("Too big Lot ","Too big Lot "); Lots=10000; } } return(Lots); } //////////////////////////////////////////////////////////////////////////////// void Opening_8() { profit_8=MathRound(avrange_8/ProfitK_8); loss=MathRound(avrange_8/LossK); InsuranceStop=MathRound(loss*ISK); Lots=LotSizeCounting(8); if (Close[1]>=buyprice_8) { for (int try=1;try<=MaxTries;try++) { while (!IsTradeAllowed()) Sleep(5000); RefreshRates(); ticket=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,4),3,NormalizeDouble(Ask-InsuranceStop*Point,4),1.5,"Order 8-series Open",MN_8,Blue); Sleep(Pause); if (ticket>0){OpenDay=Day();Pause=1000;break;} else { err=GetLastError(); Print("OrderSend failed with error #",err," : ",ErrorDescription(err),"Trying again #",try); Pause=Pause*2; if (try==MaxTries) { Pause=1000; Print("Warning!!!Last try failed!"); SendMail("Warning!!!Last try failed!",OrderType()+" by "+OrderOpenPrice()+" Opening failed!"); break; } } } } if (sellprice_8>=Close[1]) { for (try=1;try<=MaxTries;try++) { while (!IsTradeAllowed()) Sleep(5000); RefreshRates(); ticket=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,4),3,NormalizeDouble(Bid+InsuranceStop*Point,4),0.5,"Order 8-series Open",MN_8,Red); Sleep(Pause); if (ticket>0){OpenDay=Day();Pause=1000;break;} else { err=GetLastError(); Print("OrderSend failed with error #",err," : ",ErrorDescription(err),"Trying again #",try); Pause=Pause*2; if (try==MaxTries) { Pause=1000; Print("Warning!!!Last try failed!"); SendMail("Warning!!!Last try failed!",OrderType()+" by "+OrderOpenPrice()+" Opening failed!"); break; } } } } } ///////////////////////////////////////////////////////////////////// void Opening_12() { profit_12=MathRound(avrange_12/ProfitK_12); loss=MathRound(avrange_12/LossK); InsuranceStop=MathRound(loss*ISK); Lots=LotSizeCounting(12); if (Close[1]>=buyprice_12) { for (int try=1;try<=MaxTries;try++) { while (!IsTradeAllowed()) Sleep(5000); RefreshRates(); ticket=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,4),3,NormalizeDouble(Ask-InsuranceStop*Point,4),1.5,"Order 12-series Open",MN_12,Blue); Sleep(Pause); if (ticket>0){OpenDay=Day();Pause=1000;break;} else { err=GetLastError(); Print("OrderSend failed with error #",err," : ",ErrorDescription(err),"Trying again #",try); Pause=Pause*2; if (try==MaxTries) { Pause=1000; Print("Warning!!!Last try failed!"); SendMail("Warning!!!Last try failed!",OrderType()+" by "+OrderOpenPrice()+" Opening failed!"); break; } } } } if (sellprice_12>=Close[1]) { for (try=1;try<=MaxTries;try++) { while (!IsTradeAllowed()) Sleep(5000); RefreshRates(); ticket=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,4),3,NormalizeDouble(Bid+InsuranceStop*Point,4),0.5,"Order 12-series Open",MN_12,Red); Sleep(Pause); if (ticket>0){OpenDay=Day();Pause=1000;break;} else { err=GetLastError(); Print("OrderSend failed with error #",err," : ",ErrorDescription(err),"Trying again #",try); Pause=Pause*2; if (try==MaxTries) { Pause=1000; Print("Warning!!!Last try failed!"); SendMail("Warning!!!Last try failed!",OrderType()+" by "+OrderOpenPrice()+" Opening failed!"); break; } } } } } ///////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////// void start() { if (Period()!=60) return; if (DaysMode==2) {Days2Check=DayOfWeek()+D2Ch;} if (Hour()==CheckHour_8 && Day()!=CheckDay_8) {Levels_Defining_8(); CheckDay_8=Day();} if (Hour()==CheckHour_12 && Day()!=CheckDay_12) {Levels_Defining_12(); CheckDay_12=Day();} if (OrdersTotal()>0) { Close_by_Stops_8(); Close_by_Stops_12(); if ((Hour()>=CloseHour) && (Day()!=OpenDay) ) {Close_by_Closetime();Close_by_Closetime();} } if (Hour()>LatestOpenHour || Day()==OpenDay) return; { if (Day()==CheckDay_8 && (channel_8<(avrange_8/ChannelK)*Point)) {Opening_8(); } if (OrdersTotal()==TradesPerDayAllowed) return; if (Day()==CheckDay_12 &&(channel_12<(avrange_12/ChannelK)*Point)) {Opening_12(); } } } ///////////////////////////////////////////////////////// // Lots=NormalizeDouble(MathSqrt(100*channel_8),1); // Lots=NormalizeDouble(((AccountFreeMargin( )/100)*MaxDD_Allowed )/((loss)*SystemTrustK*PointPrice),1); // Lots=NormalizeDouble(((AccountFreeMargin( )/100)*MaxDD_Allowed )/(MaxSystemDD*SystemTrustK*PointPrice),1); // Print(Lots); // Lots=NormalizeDouble(MathSqrt(100*channel_12),1); // Lots=NormalizeDouble(((AccountFreeMargin( )/100)*MaxDD_Allowed )/((loss)*SystemTrustK*PointPrice),1); // Lots=NormalizeDouble(((AccountFreeMargin( )/100)*MaxDD_Allowed )/(MaxSystemDD*SystemTrustK*PointPrice),1);
или вот еще один, из той же оперы, тоже прибыльный.
//+------------------------------------------------------------------+ //| NEWbreakout.mq4 | //| Dan | //| https://www.metaquotes.net | //+------------------------------------------------------------------+ //3-6-3-32-2-x-x-100-120 //3-6-3-32-2-x-x-70-150 //3-6-3-32-1-0.8-0.5-x-x #property copyright "Dan" #property link "https://www.metaquotes.net" extern int periodK=3; extern int channelK=6; extern double offsetK=3; extern int per1od=32; extern int plMODE=2; extern double profitK=7; extern double lossK=1; extern int StopLoss=100; extern int TakeProfit=120; extern double Lots = 0.1; extern string _Parameters_b_Lots = "Параметры модуля расчёта лота"; extern int LotsWayChoice = 1; // Способ выбора рабочего лота: // 0-фиксированный, // 1-процент от депозита, // 2-фракционно-пропорциональный, // 3-фракционно-фиксированный, extern double LotsPercent=40; // Процент от депозита extern double LotsDeltaDepo=500; // Коэффициент приращения депозита extern double LotsDepoForOne=500; // Размер депозита для одного минилота extern double LotsMax=10000; // Максимальное количество минилотов extern string x= "------------------------------"; //============================ double bigchannel; double smallchannel,dlots; int b; double hi; double lo; double offset; double sellprice; double buyprice; int profit; int loss; int i; /* //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); }*/ //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ void start() { dlots=GetSizeLot(); //---- if (b!=Bars) { bigchannel= (High[Highest(NULL,0,MODE_HIGH,per1od,1)]- Low[Lowest(NULL,0,MODE_LOW,per1od,1)]); smallchannel= (High[Highest(NULL,0,MODE_HIGH,MathRound(per1od/periodK),1)]- Low[Lowest(NULL,0,MODE_LOW,MathRound(per1od/periodK),1)]); b=Bars; if (plMODE==1) { profit=MathRound((bigchannel/profitK)/Point); loss=MathRound((bigchannel/lossK)/Point); } if (plMODE==2) { profit=TakeProfit; loss=StopLoss; } if (((bigchannel*Point)/(smallchannel*Point))>=channelK) { hi=High[Highest(NULL,0,MODE_HIGH,MathRound(per1od/periodK),1)]; lo=Low[Lowest(NULL,0,MODE_LOW,MathRound(per1od/periodK),1)]; offset=(bigchannel/offsetK); sellprice=(lo-offset); buyprice=(hi+offset); } if (OrdersTotal()<1) { if (Close[1]>=buyprice) { OrderSend(Symbol(),OP_BUY,dlots,Ask,3,0,10,"",0,0,Blue); } if (Close[1]<=sellprice) { OrderSend(Symbol(),OP_SELL,dlots,Bid,3,10,0,"",0,0,Red); } } /* */ if (OrdersTotal()>0) { for(i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=0 || OrderSymbol()!=Symbol()) continue; if ((OrderType()==OP_BUY) && (((Close[1]-OrderOpenPrice())>=profit*Point) || ((OrderOpenPrice()-Close[1])>=loss*Point)) || (Close[1]<=sellprice)) { OrderClose(OrderTicket(),OrderLots(),Bid,3,White); break; } if ((OrderType()==OP_SELL) && (((Close[1]-OrderOpenPrice())>=loss*Point) || ((OrderOpenPrice()-Close[1])>=profit*Point)) || (Close[1]>=buyprice)) { OrderClose(OrderTicket(),OrderLots(),Ask,3,White); break; } } } ///---- //} } } //+------------------------------------------------------------------+ double GetSizeLot() { double dLot; if (LotsWayChoice==0) dLot=Lots; Print("0 ",dLot); // фиксированный процент от депозита if (LotsWayChoice==1) { dLot=MathCeil(AccountFreeMargin()/10000*LotsPercent)/10; Print("1 ",dLot); } // фракционно-пропорциональный if (LotsWayChoice==2) { int k=LotsDepoForOne; for (double i=2; i<=LotsMax; i++) { k=k+i*LotsDeltaDepo; if (k>AccountFreeMargin()) { dLot=(i-1)/10; break; } } Print("2 ",dLot); } // фракционно-фиксированный if (LotsWayChoice==3) { dLot=MathCeil((AccountFreeMargin()-LotsDepoForOne)/LotsDeltaDepo)/10; Print("3 ",dLot); } if (dLot<0.1) dLot=0.1; if (dLot>LotsMax) dLot=LotsMax; return(NormalizeDouble(dLot,1)); }
и еще один :)
//+------------------------------------------------------------------+ //| 9-0-7-1-2-2-2-1 ttt.mq4 | //| 9-0-2-1-2-1-2.5 Dan | //| 9-0-9-2-1-1-1-1 // 9-0-6-1-2-2-2-1(m15) https://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Dan" #property link "https://www.metaquotes.net" #define MAGICMA 20050610 //---- input parameters extern int checkhour=8; extern int checkminute=0; extern int days2check=7; extern int checkmode=1; extern double profitK=2; extern double lossK=2; extern double offsetK=2; extern int closemode=1; //+------------------------------------------------------------------+ int latestopenhour=23; int tradesallowed=1; double sellprice; double buyprice; int profit; int loss; int offset; int avrange; double daj[30]; int i; int dd; int bb; int d; int pp; double hh; double ll; int p; double totalrange; //============================================================ void start() { if (Bars==bb) return; bb=Bars; if ( (Hour()==checkhour) && (Minute()==checkminute) ) // ==========================================Print(dd); { dd=Day(); pp=((checkhour*60)/Period()+checkminute/Period()); hh=High[Highest(NULL,0,MODE_HIGH,pp,1)]; ll=Low[Lowest(NULL,0,MODE_LOW,pp,1)]; p=((24*60)/Period()); totalrange=0; if(checkmode==1) { for(i=1;i<=days2check;i++) { daj[i]=(High[Highest(NULL,0,MODE_HIGH,p,p*i+1)] -Low[Lowest(NULL,0,MODE_LOW,p,p*i+1)]); totalrange=totalrange+daj[i]; avrange=MathRound((totalrange/i)/Point); } } if(checkmode==2) { for( i=1;i<=days2check;i++) { daj[i]=MathAbs(Close[p*i+pp]- Close[p*(i-1)+pp]); totalrange=totalrange+daj[i]; avrange=MathRound((totalrange/i)/Point); } } { offset=MathRound((avrange)/offsetK); sellprice=ll-offset*Point; buyprice=hh+offset*Point; } if (OrdersTotal()>0) { for(i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=0 || OrderSymbol()!=Symbol()) continue; if (OrderType()==OP_BUY) { OrderClose(OrderTicket(),1,Bid,3,White); break; } if (OrderType()==OP_SELL) { OrderClose(OrderTicket(),1,Ask,3,White); break; } } } } if (closemode==2 && Day()!=dd && (OrdersTotal()>0)) { for(i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=0 || OrderSymbol()!=Symbol()) continue; if (OrderType()==OP_BUY) { OrderClose(OrderTicket(),1,Bid,3,White); break; } if (OrderType()==OP_SELL) { OrderClose(OrderTicket(),1,Ask,3,White); break; } } } for(i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=0 || OrderSymbol()!=Symbol()) continue; if ((OrderType()==OP_BUY) && (((Close[1]-OrderOpenPrice())>=profit*Point) || ((OrderOpenPrice()-Close[1])>=loss*Point))) { OrderClose(OrderTicket(),1,Bid,3,White); break; } if ((OrderType()==OP_SELL) && (((Close[1]-OrderOpenPrice())>=loss*Point) || ((OrderOpenPrice()-Close[1])>=profit*Point))) { OrderClose(OrderTicket(),1,Ask,3,White); break; } } int lastopenhour=23; if ((Hour()<=lastopenhour) && (Day()==dd) && (Day()!=d) && (OrdersTotal()<tradesallowed)) { if (Close[1]>=buyprice) { profit=MathRound((avrange)/profitK); loss=MathRound((avrange)/lossK); OrderSend(Symbol(),OP_BUY,1,Ask,3,0,10,"",0,0,Blue); dd=Day(); if (tradesallowed==1) {d=Day();} // return(d); } if (Close[1]<=sellprice) { profit=MathRound((avrange)/profitK); loss=MathRound((avrange)/lossK); OrderSend(Symbol(),OP_SELL,1,Bid,3,10,0,"",0,0,Red); dd=Day(); if (tradesallowed==1) {d=Day();} } return; } }
все эти эксперты рабочие проверено, работают на EURUSD H1, развлекайтесь :))
вот эта конструкция и то больше заработает:
if(true) OpenBuy(); if(true) OpenSell();
Блеск!
вот эта конструкция и то больше заработает:
if(true) OpenBuy(); if(true) OpenSell();
Блеск!
Та не..
Вот это шедевр!:))
Ты знаешь, я тебе как программист скажу
"А вы поезжайте на форум метаквотесов и спросите - кто такой Паниковский!"
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Индикатор:
анализируется средний бар из 3х
(1) показывается значение максимальное Н из 3х + дельта
(2) показывается значение минимальное L из 3х - дельта
Тоесть своего рода усеченный фрактал.
Эксперт1:
заход Long по (1)
заход Short по (2)
реверсивная система с оптимизируемым параметром "дельта"
Эксперт2:
Эксперт1+трелинг
Заранее спасибо.