Price Data Components
Orders Execution
Indicators Used
1
Views
0
Downloads
0
Favorites
qrvomcdu7jmwl2_2mxhh2f4az
//+------------------------------------------------------------------+
//| Äíåâíîé îòêàò.mq4 |
//| Copyright © 2009, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#property copyright "Sergey Golikov"
/*
Äàííûå íàñòðîéêè ïîëó÷åíû íà ïåðèîäå îïòèìèçàöèè ñ 01.01.2009 ïî 01.03.2009 íà êîòèðîâêàõ ÄÖ."Àëüïàðè".
Ôîðâàðä-òåñò ïðîâîäèëñÿ ñ 01.03.2009 ïî 17.07.2009 .Ïîêà äåðæèò.
Êîìïîçèòíûé èíäåêñ äîëëàðà, âêëþ÷àåò â ñåáÿ âàëþòû ñî ñëåäóþùèìè âåñàìè: 57.6% åâðî, 13.6% ÿïîíñêàÿ éåíà, 11.9% áðèòàíñêèé
ôóíò, 9.1% êàíàäñêèé äîëëàð, 4.2% øâåäñêàÿ êðîíà, 3.6% øâåéöàðñêèé ôðàíê. ** Ðàçíèöà ìåæäó êîòèðîâêàìè: òåêóùåé è â÷åðà íà 0.00 Ìñê
*/
//+------------------------------------------------------------------+
#define MB 11111
#define MS 22222
//+------------------------------------------------------------------+
extern string y="EURUSD";
extern string y1 ="ÑòîïËîññ ïî ïàðå";
extern int ON_SL =1;// åñëè 0 òî ñòîïëîññ îòêëþ÷åí
//extern int Sl =50;
extern double n =0.91;//áåçðàçìåðíûé êîýô-íò îòíîøåíèÿ ñòîïàëîññà è òåéêïðîôèòà.Èñïîëüçóåòñÿ ìíîþ â ñëó÷àå ðàáîòû ñ èñïîëüçîâàíèåì ìàðòèíãåéëà
//Î÷åíü ïðîñòî äîáèòüñÿ áîëüøîé % ïðèáûëüíûõ ñäåëîê ïðè ìàëåíüêîì òåéêïðîôèòå è áîëüøîì ñòîïëîññå.
//Íî ïðè ýòîì îäèí ëîññ óáüåò âåñü ïðåäûäóùèé òåéêïðîôèò.Ïîýòîìó ïðè òåñòèðîâàíèè ÿ çàêîììåíòèðîâûâàþ //extern int Sl =50;,
//è èñïîëüçóþ â ðàññ÷åòàõ äàííûé êîýô-íò.Òîãäà ïðè òåñòèðîâàíèè ñîâåòíèê âûíóæäåí ñîîòíîñèò ðàçìåðû òåéêïðîôèòà è ñòîïëîññà.
//Ïðè èñïîëüçîâàíèè ìàðòèíãåéëà âàæíî ,÷òîáû ðàçìåð òåéêïðîôèòà è ñòîïëîñà áûëè ïðèìåðíî ðàâíû â ïóíêòàõ.Òîãäà ïåðâàÿ ïðèáûëüíàÿ ñäåëêà
// ñìîæåò ïåðåêðûòü (èëè ïî÷òè ïåðåêðûòü) ñåðèþ âñåõ ïðåäûäóùèõ óáûòî÷íûõ ñäåëîê.Ïîýòîìó íå íàçíà÷àþ n áîëå 2 ñ øàãîì 0.1.
extern string y2 ="ÒåéêÏðîôèò ïî ïàðå";
extern int ON_TP =1;//åñëè 0 òî òåéêïðîôèò îòêëþ÷åí
extern int Profit =302;
extern string y3 ="Íà÷àëüíûé ëîò";
extern double Lots =0.1;
extern double K_0 =2;//2 ìíîæèòåëü íà÷àëüíîãî ëîòà
extern double K =2;//2 ìíîæèòåëü ïîñëåäóþùèõ ëîòîâ
extern double MaxLot =6.4;
extern int Losse =1;//êîë-âî îòðèöàèåëüíûõ ñäåëîê ïîñëå êîòîðûõ âêëè÷àåòñÿ ìàðòèíãåéë
extern string y4 ="Âêëþ÷åíèå ôóíêöèè âûñòàâëåíèÿ äèíàìè÷åñêîãî ëîòà";
extern bool LotsSize =false;
extern double MaximumRisk =0.01;
extern string y5 ="ÒðåéëèíãÑòîï ïî ïàðå";
extern bool TS =false;
extern int Sl_TS =272;
extern int TrailingStep =126;
extern string y6 = "Íàñòðîéêè îïðåäåëèòåëÿ òðåíäà ";
extern int PeriodPower =15;
extern int Period_Bulls =10;
extern int Period_Bears =14;
extern double Ãðàíèöà_UP =0.05;//ãðàíèöà ñðàáàòûâàíèÿ îïðåäåëèòåëÿ òðåíäà äëÿ ïîêóïêè
extern double Ãðàíèöà_DN =0.15;//ãðàíèöà ñðàáàòûâàíèÿ îïðåäåëèòåëÿ òðåíäà äëÿ ïðîäàæè
extern int ê = 870;// áåçðàçìåðíûé êîýôôèöèåíò äëÿ óäîáñòâà ðàñ÷åòà ðàçíèöû ñèëû áûêîâ è ìåäâåäåé.Òàê êàê çíà÷åíèå Delta = (MA_Bears + MA_Bulls)
//î÷åíü ìàëî è ÷òîáû íå îøèáàòüñÿ â íîëÿõ ïîñëå çàïÿòîé äëÿ Delta ÿ è ïðèìåíèë ýòîò êîýô-íò. òåñòåðå â íàñòðîéêàõ çàäàþ
//ãðàíèöû îò 10 äî 1000 ñ øàãîì 10
extern string y7 ="Íàñòðîéêè ãðàíèö êàíàëà äëÿ âõîäà â ñäåëêó";
extern int Delta2 =794;//ñðåäíÿÿ ðàçíèöà ìåæäó öåíîé â íà÷àëå òîðãîâûõ ñóòîê è òåêóùåé öåíîé (äëÿ ïðîäàæ)çà îïòèìèçèðóåìûé ïåðèîä.
extern int Delta1 =1128;//ñðåäíÿÿ ðàçíèöà ìåæäó öåíîé â íà÷àëå òîðãîâûõ ñóòîê è òåêóùåé öåíîé (äëÿ ïîêóïîê)çà îïòèìèçèðóåìûé ïåðèîä.
extern int Razmax =1250;//ñðåäíÿÿ ðàçíèöà ìåæäó ìàêñ. è ìèí. öåíîé â òå÷åíèè äíÿ çà îïòèìèçèðóåìûé ïåðèîä.
extern string y8 = " Íàñòðîéêè âðåìåíè ðàáîòû";
extern int StartHour = 0;//÷àñ íà÷àëà âû÷èñëåíèÿ ãðàíèö êàíàëà äâèæåíèÿ öåíû â òå÷åíèè äíÿ
extern int EndHour = 14;//÷àñ îêîí÷àíèÿ âû÷èñëåíèÿ ãðàíèö êàíàëà äâèæåíèÿ öåíû â òå÷åíèè äíÿ.
// Îí æå ÷àñ ðàçðåøåíèÿ íà÷àëà òîðãîâëè
extern int StopHour = 24;//Âðåìÿ îêîí÷àíèÿ ðàçðåøåíèÿ íà òîðãîâëþ.Ïîñëå ýòîãî âðåìåíè ñîâåòíèê ìîæåò òîëüêî ñîïðàâîæäàòü îòêðûòûå ñäåëêè.
extern int PeriodMA=40;
#include <stdlib.mqh>
#include <stderror.mqh>
//=======================================================================================================
double LotsOptimized()
{
double x=Losse;
double lot=Lots;
int orders=HistoryTotal();
int losses=0;
int Pair ;
//=====================Ðàññ÷åò âåëè÷èíû íà÷àëüíîãî ëîòà â çàâèñèìîñòè îò ðàçìåðà äåïîçèòà================
{
if(LotsSize)
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,2);
}
//==================Ðàññ÷åò âåëè÷èíû ëîòîâ â ñëó÷àå êîãäà, ïðåäûäóùÿÿ ñäåëêà áûëà îòðèöàòåëüíîé==========
{
for(int i=orders-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
//----
if(OrderProfit()>0) break;
if(OrderProfit()<0) losses++;
}
//==========================Ðàññ÷åò âåëè÷èíû ëîòîâ ñ ïåðåìåííûì Ê, åñëè ïðåäûäóùÿÿ ñäåëêà áûëà îòðèöàòåëüíîé==============
if(losses>((x)-1)) lot=NormalizeDouble(lot*K_0,2);//åñëè âûâåñòè â ïåðåìåííûå îòäåëüíî Ê_0,Ê_1,.......Ê_100 , òîãäà ìîæíî ïîäáèðàòü ìíîæåòåëü äëÿ êàæäîãî ëîòà îòäåëüíî
if(losses>((x*2)-1)) lot=NormalizeDouble(lot*K,2);
if(losses>((x*3)-1)) lot=NormalizeDouble(lot*K,2);
if(losses>((x*4)-1)) lot=NormalizeDouble(lot*K,2);
if(losses>((x*5)-1)) lot=NormalizeDouble(lot*K,2);
if(losses>((x*6)-1)) lot=NormalizeDouble(lot*K,2);
if(losses>((x*7)-1)) lot=NormalizeDouble(lot*K,2);
if(losses>((x*8)-1)) lot=NormalizeDouble(lot*K,2);
if(losses>((x*9)-1)) lot=NormalizeDouble(lot*K,2);
if(losses>((x*10)-1)) lot=NormalizeDouble(lot*K,2);
if(losses>((x*11)-1)) lot=NormalizeDouble(lot*K,2);
}
//----------------------------------------------------------------------+
//  òîì ñëó÷àå åñëè Âû õîòèòå ÷òîáû ìíîæåòåëü Ê áûë ïîñòîÿííûì +
// ðåêîìåíäóåòñÿ èñïîëüçîâàòü ñëåäóþùóþ êîíñòðóêöèþ êîäà ïðåäëîæåííóþ+
// òðåéäåðîì Vinin.Ñïàñèáî àâòîðó çà ïîìîùü. +
// À âåðõíþþ ÷àñòü êîäà ïðîñòî çàêîììåíòèðîâàòü. +
//----------------------------------------------------------------------+
//==========================Ðàññ÷åò âåëè÷èíû ëîòîâ ñ ïîñòîÿííûì Ê, åñëè ïðåäûäóùÿÿ ñäåëêà áûëà îòðèöàòåëüíîé==============
/*
if(losses>((x)-1)) lot=NormalizeDouble(lot*K_0,2);
for(int k=2;k<=11;k++)
if(losses>((x*k)-1))
lot=NormalizeDouble(lot*K,2);
}
*/
//===========================Ïðîâåðêà ïðàâèëüíîñòè ðàçìåðà ëîòà===============================================
/*
double minlot=MarketInfo(Pair,MODE_MINLOT);
double maxlot=MarketInfo(Pair,MODE_MAXLOT);
lot=MathMax(maxlot,MathMin(minlot,lot));
*/
if(lot<0.1) lot=0.1;
if(lot>MaxLot) lot=MaxLot;
return(lot);
}
int start()
{
LotsOptimized();
Open_Äíåâíîé_îòêàò();
if(TS) TradingStop();
return(0);
}
//================================================================================================================
int i,buy,sell,Pair,Trend/* ,Razmax */;
int Open_Äíåâíîé_îòêàò()
{
buy=0;sell=0;
for(int i=0;i<OrdersTotal();i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY ){buy=1;}
if(OrderType()==OP_SELL){sell=1;}
}
//==========================================Ðàññ÷åò âðåìåíè ðàáîòû è ãðàíèö äíåâíîãî äâèæåíèÿ öåíû==================
// Äàííàÿ êîíñòðóêöèÿ âçÿòà èç ñîâåòíèêà MorninFlat_Expert.mq4 àâòîð òðåéäåð Scriptong.Ñïàñèáî àâòîðó çà èäåþ. =
//==================================================================================================================
{
datetime BeginDay = iTime(Pair, PERIOD_D1, 0); // Ðàñ÷åò âðåìåíè íà÷àëà ñóòîê
double StartBar = iBarShift(Pair, PERIOD_H1, BeginDay+StartHour*3600); // Áàð, ñîîòâåòñâóþùèé íà÷àëó ñóòîê ïëþñ ñìåùåíèå â ÷àñàõ
double FinishBar = iBarShift(Pair, PERIOD_H1, BeginDay+(EndHour-1)*3600); // Áàð, ñîîòâåòñòâóþùèé ïîñëåäíåìó áàðó "óòðåííåãî ôëýòà"
double LowV = iLow(Pair, PERIOD_H1, iLowest(Pair, PERIOD_H1, MODE_LOW, StartBar-FinishBar+1, FinishBar)); // Íèæíÿÿ ãðàíèöà
double HighV = iHigh(Pair, PERIOD_H1, iHighest(Pair, PERIOD_H1, MODE_HIGH, StartBar-FinishBar+1, FinishBar)); // Âåðõíÿÿ ãðàíèöà
double Target = (HighV-LowV)/Point;
}
int HourCurrent=TimeHour(TimeCurrent());
//Razmax =(iMA(NULL, PERIOD_D1,PeriodMA , 0, MODE_EMA, PRICE_HIGH, 1)/Point)-(iMA(NULL, PERIOD_D1,PeriodMA , 0, MODE_EMA, PRICE_LOW, 1)/Point);
//================================== Îïðåäåëèòåëü òðåíäà ============================================================
// Äàííàÿ êîíñòðóêöèÿ áûëà ïðåäëîæåíà â ñâîå âðåìÿ òðåéäåðîì Ëåîíèä 533.Ñïàñèáî àâòîðó çà èäåþ. =
//===================================================================================================================
double Bears_array[50]; int cx=0; while (cx<51)
{Bears_array[cx]= iBearsPower(NULL, 0, PeriodPower,PRICE_CLOSE,cx); cx++; }
ArraySetAsSeries(Bears_array,true);
double MA_Bears =iMAOnArray(Bears_array,0,Period_Bears,1,MODE_SMMA,0);
double Bulls_array[50]; int lx=0; while (lx<51)
{Bulls_array[lx]= iBullsPower(NULL, 0, PeriodPower,PRICE_CLOSE,lx); lx++; }
ArraySetAsSeries(Bulls_array,true);
double MA_Bulls =iMAOnArray(Bulls_array,0,Period_Bulls,1,MODE_SMMA,0);
double Delta = (MA_Bears + MA_Bulls)*ê;
//=============================================Îïðåäåëåíèå öåíû â òå÷åíèè òîðãîâîâûõ ñóòîê===========================
// Äàííàÿ êîíñòðóêöèÿ áûëà ïðåäëîæåíà òðåéäåðîì Vinin.Ñïàñèáî àâòîðó çà ïîìîùü.
//===================================================================================================================
double Price_00=iOpen(NULL,PERIOD_D1,0); // Öåíà îòêðûòèÿ äíÿ
double Price_Cur=Close[0]; // Òåêóùÿÿ öåíà
double Sl = n*Profit; //çäåñü ñîâåòíèê ðàñ÷èòûâàåò ñòîï,ñ ó÷åòîì òîãî,÷òî-áû îãðàíè÷èòü åãî âåëè÷èíó.
//×åì ìåíüøå ï òåì ëó÷øå äëÿ ñòðàòåãèè (ìåíüøå ïðîñàäêà è îäíîâðåìåíî åñòü çàäà÷à óâåëè÷èòü ðàçìåð ïðîôèòà)
//ß èñïîëüçóþ ýòîò âàðèàíò ïðè ðàñ÷åòå ñòîïëîññà ïðè ìàíòåéãåéëå.
//=============================================Óñëîâèÿ äëÿ ñîâåðøåíèÿ ïîêóïêè========================================
//if (((Price_Cur-Price_00)/Point)>Delta1 && buy==0 && sell==0) // â äàííîì âàðèàíòå ïðè ïîêóïêå íå ó÷èòûâàåòñÿ ïîêàçàíèÿ îïðåäåëèòåëÿ òðåíäà
// if ((Delta+Ãðàíèöà_DN) < 0&&((Price_Cur-Price_00)/Point)>Delta1 && buy==0 && sell==0 ) //â äàííîì âàðèàíòå ïðè ïîêóïêå ó÷èòûâàåòñÿ ïîêàçàíèÿ îïðåäåëèòåëÿ òðåíäà
//if (((Price_Cur-Price_00)/Point)>Delta1 &&sell==0 && buy==0 && Target>Razmax ) //â äàííîì âàðèàíòå ïðè ïîêóïêå ó÷èòûâàåòñÿ äíåâíîå äâèæåíèå öåíû
// if ((( Price_00-Price_Cur)/Point)>Delta1 && buy==0 && sell==0 && Target>Razmax && HourCurrent>=EndHour && HourCurrent<StopHour)// â äàííîì âàðèàíòå ó÷èòûâàåòñÿ âðåìÿ ðàáîòû ñîâåòíèêà
if ((Delta+Ãðàíèöà_DN) < 0&&(( Price_00-Price_Cur)/Point)>Delta1 && buy==0 && sell==0 && Target>Razmax && HourCurrent>=EndHour && HourCurrent<StopHour)// â äàííîì âàðèàíòå ó÷èòûâàåòñÿ âñå ñèãíàëû äëÿ îòêðûòèÿ ñäåëêè
{
RefreshRates();
OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,
(Bid-Sl*Point)*ON_SL,
(Ask+Profit*Point)*ON_TP,"",MB,0,Red);
}
//===========================Óñëîâèÿ äëÿ ñîâåðøåíèÿ ïðîäàæè===========================================================
// if ((( Price_00-Price_Cur)/Point)>Delta2 && sell==0 && buy==0 )// â äàííîì âàðèàíòå ïðè ïðîäàæå íå ó÷èòûâàåòñÿ ïîêàçàíèÿ îïðåäåëèòåëÿ òðåíäà
// if ( (Delta-Ãðàíèöà_UP) > 0 &&(( Price_00-Price_Cur)/Point)>Delta2 && sell==0 && buy==0) //â äàííîì âàðèàíòå ïðè ïðîäàæå ó÷èòûâàåòñÿ ïîêàçàíèÿ îïðåäåëèòåëÿ òðåíäà
// if ((( Price_00-Price_Cur)/Point)>Delta2 &&buy==0 && sell==0 && Target>Razmax )//â äàííîì âàðèàíòå ïðè ïðîäàæå ó÷èòûâàåòñÿ äíåâíîå äâèæåíèå öåíû
// if (((Price_Cur-Price_00)/Point)>Delta2 && sell==0 && buy==0 && Target>Razmax && HourCurrent>=EndHour && HourCurrent<StopHour)// â äàííîì âàðèàíòå ó÷èòûâàåòñÿ âðåìÿ ðàáîòû ñîâåòíèêà
if ((Delta-Ãðàíèöà_UP) > 0 &&((Price_Cur-Price_00)/Point)>Delta2 && sell==0 && buy==0 && Target>Razmax && HourCurrent>=EndHour && HourCurrent<StopHour)// â äàííîì âàðèàíòå ó÷èòûâàåòñÿ âñå ñèãíàëû äëÿ îòêðûòèÿ ñäåëêè
{
RefreshRates();
OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,
(Ask+Sl*Point)*ON_SL,
(Bid-Profit*Point)*ON_TP,"",MS,0,Red);
}
}
//========================================Òðåéëèòã ñòîï===============================================================
int i1,buy1,sell1;
int TradingStop()
{
buy1=0;sell1=0;
for(int i1=0;i1<OrdersTotal();i1++)
{
OrderSelect(i1, SELECT_BY_POS, MODE_TRADES);
if(OrderType()==OP_BUY ){buy1=1;}
if(OrderType()==OP_SELL){sell1=1;}
}
if(buy1==1)
{
if(Bid - OrderOpenPrice() > Point*TrailingStep)
{
if(OrderStopLoss() < Bid - Point*TrailingStep)
{
OrderModify(OrderTicket(), OrderOpenPrice(),
Bid - Point*Sl_TS,
OrderTakeProfit(), 0, Green);
return(0);
}
}
}
if(sell1==1)
{
if((OrderOpenPrice() - Ask) > Point*TrailingStep)
{
if(OrderStopLoss() > Ask+Point*TrailingStep)
{
OrderModify(OrderTicket(), OrderOpenPrice(),
Ask + Point*Sl_TS,
OrderTakeProfit(), 0, Red);
return(0);
}
}
}
}
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---