//+------------------------------------------------------------------+ //| Swetten | //|Èñõîäíèê ýòîãî ñîâåòíèêà óòåðÿí, íî, ïî ìîåìó, àâòîð Klot. | //|Ïîìîãàëè ñîâåòàìè çäåñü: http://forum.mql4.com/ru/15200 | //+------------------------------------------------------------------+ #property copyright "Swetten" #property link "" #include <stdlib.mqh> #import "NS2-32.dll" int OpenNet(string defpath, int& netnumber[1], int& Nin[1], int& Nout[1]); // Îòêðûòèå ñåòè int FireNet(int& netnumber[1], double& inarray[], double& outarray[]); // Âûïîëíåíèå ñåòè int CloseNet(int& netnumber[1]); // Çàêðûòèå ñåòè #import int ret; int Stop; int Error; int Nin[1]; // Ðàçìåð ìàññèâà âõîäîâ int Nout[1]; // Ðàçìåð ìàññèâà âûõîäîâ int netnumber[1]; // Óêàçàòåëü íà ñåòü int LotsWayChoice = 0; int BuyTicket = 0; int SellTicket = 0; int Takeprofit = 154; int StopLoss; int OpenTrade; int TimeFrame; int TakeProfit; int ChannelPeriod; int CloseTrade; int SlipPage=3; int LotsPercent; int MagicNumber; // Òóò çàäàåòñÿ ïóòü è èìÿ ôàéëà íåéðîñåòè string BuyComment = "", SellComment = ""; string defpath="C:\EURUSD.def"; double Lots; double kanal = 0 ; double inarray[], outarray[]; double BuySwap = 0.0, SellSwap = 0.0; double BuyLots = 0.0, SellLots = 0.0; double BuyProfit = 0.0, SellProfit = 0.0; double BuyStopLoss = 0.0, SellStopLoss = 0.0; double BuyOpenPrice = 0.0, SellOpenPrice = 0.0; double BuyTakeProfit = 0.0, SellTakeProfit = 0.0; double BuyCommission = 0.0, SellCommission = 0.0; datetime BuyOpenTime = -1, SellOpenTime = -1; bool SIGNAL_BUY; bool SIGNAL_SELL; int init() { IdentificationÑurrencies(); ret=OpenNet(defpath, netnumber, Nin, Nout); if (ret==0) { Print("netnumber= ",netnumber[0], " Nin= ",Nin[0], " Nout= ",Nout[0]); ArrayResize(inarray,Nin[0]); ArrayResize(outarray,Nout[0]); } else { Print( "Îøèáêà OpenNet ", ret ); return(0); } return(0); } int deinit() { ret=CloseNet(netnumber); // Çàêðûâàåì ñåòü if ( ret!=0 ) Print( "Îøèáêà CloseNet ", ret ); return(0); } int start() { OneTypeOrdersInit( MagicNumber ); ConditionsSignal(); CloseOrders(); OpenOrders(); return(0); } void IdentificationÑurrencies() { TakeProfit =150; StopLoss =40; Lots = 0.1; return; } int ConditionsSignal () { if( DayOfWeek() == 0 || DayOfWeek() == 6 ) return(0); if(Bars<100) { Print("bars less than 100"); return(0); } if(AccountFreeMargin()<(1000*Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } bool T = ( ( Hour()== 0 && Minute()==0 ) || ( Hour()== 2 && Minute()==0 ) || ( Hour()== 4 && Minute()==0 ) || ( Hour()== 6 && Minute()==0 ) || ( Hour()== 8 && Minute()==0 ) || ( Hour()== 10 && Minute()==0 ) || ( Hour()== 12 && Minute()==0 ) || ( Hour()== 14 && Minute()==0 ) || ( Hour()== 16 && Minute()==0 ) || ( Hour()== 18 && Minute()==0 ) || ( Hour()== 20 && Minute()==0 ) || ( Hour()== 22 && Minute()==0 ) ) ; if (T == 0) return(0); SIGNAL_BUY = false; SIGNAL_SELL = false; int i = 1; inarray[0]=iMA(NULL, PERIOD_M1,233,0, MODE_SMA,0,1)-iMA(NULL, PERIOD_M1,144,0, MODE_SMA,0,1); inarray[1]=iMA(NULL, PERIOD_M1,233,0, MODE_SMA,0,1)-iMA(NULL, PERIOD_M1,89,0, MODE_SMA,0,1); inarray[2]=iMA(NULL, PERIOD_M1,233,0, MODE_SMA,0,1)-iMA(NULL, PERIOD_M1,55,0, MODE_SMA,0,1); inarray[3]=iMA(NULL, PERIOD_M1,233,0, MODE_SMA,0,1)-iMA(NULL, PERIOD_M1,34,0, MODE_SMA,0,1); inarray[4]=iMA(NULL, PERIOD_M1,233,0, MODE_SMA,0,1)-iMA(NULL, PERIOD_M1,21,0, MODE_SMA,0,1); inarray[5]=iMA(NULL, PERIOD_M1,233,0, MODE_SMA,0,1)-iMA(NULL, PERIOD_M1,13,0, MODE_SMA,0,1); inarray[6]=iMA(NULL, PERIOD_M1,233,0, MODE_SMA,0,1)-iMA(NULL, PERIOD_M1,8,0, MODE_SMA,0,1); inarray[7]=iMA(NULL, PERIOD_M1,233,0, MODE_SMA,0,1)-iMA(NULL, PERIOD_M1,5,0, MODE_SMA,0,1); inarray[8]=iMA(NULL, PERIOD_M1,233,0, MODE_SMA,0,1)-iMA(NULL, PERIOD_M1,3,0, MODE_SMA,0,1); inarray[9]=iMA(NULL, PERIOD_M1,233,0, MODE_SMA,0,1)-iMA(NULL, PERIOD_M1,2,0, MODE_SMA,0,1); FireNet(netnumber, inarray, outarray); Print(outarray[0]); if (outarray[0] > 0) SIGNAL_BUY = true ; if (outarray[0] < 0) SIGNAL_SELL = true ; return(0); } //+------------------------------------------------------------------+ int OpenOrders() { if ( SellTicket>0 || BuyTicket >0 ) return(0); if (SIGNAL_BUY ) { BuyOpenPrice = NormalizeDouble( Ask , Digits ); if ( OrderSend( Symbol(), OP_BUY, LotsOptimized(), BuyOpenPrice,SlipPage, BuyOpenPrice - StopLoss*Point,BuyOpenPrice + TakeProfit*Point, "GOLDsuperVEIN", MagicNumber, 0, Blue ) < 0 ) { Error = GetLastError(); Print( "Îøèáêà OrderSend ¹ ", Error ); return(-1); } return(0); } if (SIGNAL_SELL ) { SellOpenPrice = NormalizeDouble( Bid , Digits ); if ( OrderSend( Symbol(), OP_SELL, LotsOptimized(), SellOpenPrice,SlipPage, SellOpenPrice + StopLoss*Point,SellOpenPrice - TakeProfit*Point, "GOLDsuperVEIN", MagicNumber, 0, Red ) < 0 ) { Error = GetLastError(); Print( "Îøèáêà OrderSend ¹ ", Error ); return(-1); } return(0); } return(0); } //+------------------------------------------------------------------+ int CloseOrders() { if ( BuyTicket > 0 ) { if (NormalizeDouble(Bid - Takeprofit*Point, Digits )>= BuyOpenPrice || SIGNAL_SELL ) { if ( !OrderClose( BuyTicket, BuyLots, Bid, SlipPage, Aqua ) ) { Error = GetLastError(); Print( "Îøèáêà OrderClose ¹ ", Error ); return(-1); } return(0); } } if ( SellTicket > 0 ) { if (NormalizeDouble(Ask + Takeprofit*Point, Digits )<= SellOpenPrice || SIGNAL_BUY ) { if ( !OrderClose( SellTicket, SellLots, Ask, SlipPage, DeepPink ) ) { Error = GetLastError(); Print( "Îøèáêà OrderClose ¹ ", Error ); return(-1); } return(0); } } return(0); } //+------------------------------------------------------------------+ double LotsOptimized() { double dLot; return(1); } //+------------------------------------------------------------------+ void OneTypeOrdersInit( int magic ) { // îáíóëåíèå ïåðåìåííûõ: BuyTicket = 0; SellTicket = 0; BuyLots = 0.0; SellLots = 0.0; BuyOpenPrice = 0.0; SellOpenPrice = 0.0; BuyStopLoss = 0.0; SellStopLoss = 0.0; BuyTakeProfit = 0.0; SellTakeProfit = 0.0; BuyOpenTime = -1; SellOpenTime = -1; BuyProfit = 0.0; SellProfit = 0.0; BuySwap = 0.0; SellSwap = 0.0; BuyCommission = 0.0; SellCommission = 0.0; BuyComment = ""; SellComment = ""; int Error = 0, Total = OrdersTotal(); for ( int i = Total - 1; i >= 0; i -- ) { if ( !OrderSelect( i, SELECT_BY_POS ) ) { Error = GetLastError(); Print( "OrderSelect( ", i, ", SELECT_BY_POS ) - Error #", Error ); continue; } if ( OrderMagicNumber() == magic && OrderSymbol() == Symbol() ) { switch ( OrderType() ) { case OP_BUY: BuyTicket = OrderTicket(); BuyLots = NormalizeDouble( OrderLots(), 0.1 ); BuyOpenPrice = NormalizeDouble( OrderOpenPrice(), Digits ); BuyStopLoss = NormalizeDouble( OrderStopLoss(), Digits ); BuyTakeProfit = NormalizeDouble( OrderTakeProfit(), Digits ); BuyOpenTime = OrderOpenTime(); BuyProfit = NormalizeDouble( OrderProfit(), 2 ); BuySwap = NormalizeDouble( OrderSwap(), 2 ); BuyCommission = NormalizeDouble( OrderCommission(), 2 ); BuyComment = OrderComment(); break; case OP_SELL: SellTicket = OrderTicket(); SellLots = NormalizeDouble( OrderLots(), 0.1 ); SellOpenPrice = NormalizeDouble( OrderOpenPrice(), Digits ); SellStopLoss = NormalizeDouble( OrderStopLoss(), Digits ); SellTakeProfit = NormalizeDouble( OrderTakeProfit(), Digits ); SellOpenTime = OrderOpenTime(); SellProfit = NormalizeDouble( OrderProfit(), 2 ); SellSwap = NormalizeDouble( OrderSwap(), 2 ); SellCommission = NormalizeDouble( OrderCommission(), 2 ); SellComment = OrderComment(); break; } } } } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Indicator Curves created:
Indicators Used:
Moving average indicator
Custom Indicators Used:
NS2-32
Order Management characteristics:
It automatically opens orders when conditions are reached
It Closes Orders by itself
Checks for the total of open orders
Other Features: