Orders Execution
0
Views
0
Downloads
0
Favorites
AlexmanConcursExpert Lots
/*-----------------------------+
| |
| Shared by www.Aptrafx.com |
| |
+------------------------------*/
//+------------------------------------------------------------------+
//| AlexmanConcursExpert.mq4 |
//| Copyright © 2006, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#define copyright "Copyright © 2006, AlexMan Studio"
#define link "mailto:alexgomel@tut.by"
#import "AlexConcursLibrary.ex4"
//Íåêîòîðûå ôóíêöèè äëÿ ðàáîòû ýêñïåðòà
// double StopValue(int i);
bool IsByeTrade(int i);
bool IsSellTrade(int i);
bool IsStopByeTrade(int i);
bool IsStopSellTrade(int i);
double EmaStop(int PeriodEMA, int i);
#import
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
GlobalVariableSet( "AlexmanConcursExpert", 0);
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
extern int _MagicNumber = 1440; // Óíèêàëüíûé ìàãè÷åñêèé íîìåð îðäåðà
extern int PeriodEMA = 15; // Ïåðèîä ÅÌÀ äëÿ ðàñ÷åòà ñòîï-ëîñà
extern int Zazor = 7; // áóôôåðíûé çàïàñ íà ñòîï-ëîññ
extern double Lots = 0.1; //<----Ben added this extern input and put it in OrderSend's below
// Òàê êàê ïî óñëîâèÿì êîíêóðñà âêëþ÷àåìûå ôàéëû íå ðàçðåøåíû, èñïîëüçóåìûé ôàéë
// OneOrderControl.mq4 âñòàâëåí â òåëî ýêñïåðòà íåïîñðåäñòâåííî.
// Ñïàñèáî çà ñèñòåìó óïðàâëåíèÿ îðäåðàìè Àíäðåþ Õàòèìëÿíñêîìó!
//+------------------------------------------------------------------+
//| OneOrderControl.mq4 |
//| Copyright © 2006, komposter |
//| mailto:komposterius@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, komposter"
#property link "mailto:komposterius@mail.ru"
int _Ticket = 0, _Type = 0; double _Lots = 0.0, _OpenPrice = 0.0, _StopLoss = 0.0;
double _TakeProfit = 0.0; datetime _OpenTime = -1; double _Profit = 0.0, _Swap = 0.0;
double _Commission = 0.0; string _Comment = ""; datetime _Expiration = -1;
void OneOrderInit( int magic )
{
int _GetLastError, _OrdersTotal = OrdersTotal();
_Ticket = 0; _Type = 0; _Lots = 0.0; _OpenPrice = 0.0; _StopLoss = 0.0;
_TakeProfit = 0.0; _OpenTime = -1; _Profit = 0.0; _Swap = 0.0;
_Commission = 0.0; _Comment = ""; _Expiration = -1;
for ( int z = _OrdersTotal - 1; z >= 0; z -- )
{
if ( !OrderSelect( z, SELECT_BY_POS ) )
{
_GetLastError = GetLastError();
Print( "OrderSelect( ", z, ", SELECT_BY_POS ) - Error #", _GetLastError );
continue;
}
if ( OrderMagicNumber() == magic && OrderSymbol() == Symbol() )
{
_Ticket = OrderTicket();
_Type = OrderType();
_Lots = OrderLots(); //<--- Ben took normalize out
_OpenPrice = NormalizeDouble( OrderOpenPrice(), Digits );
_StopLoss = NormalizeDouble( OrderStopLoss(), Digits );
_TakeProfit = NormalizeDouble( OrderTakeProfit(), Digits );
_OpenTime = OrderOpenTime();
_Profit = NormalizeDouble( OrderProfit(), 2 );
_Swap = NormalizeDouble( OrderSwap(), 2 );
_Commission = NormalizeDouble( OrderCommission(), 2 );
_Comment = OrderComment();
_Expiration = OrderExpiration();
return(0);
}
}
}
int Shift=1;
int start()
{
// if (CurTime() < D'2006.07.01 00:00') return(0);
int _GetLastError = 0;
double spraid = Ask-Bid;
double EmaStopValue = EmaStop(PeriodEMA,Shift); // âûíåñ â ïåðåìåííóþ äëÿ ðàçãðóçêè ïðîöà
//---- Çàïîìèíàåì ïàðàìåòðû îòêðûòîé ïîçèöèè (åñëè îíà åñòü)
OneOrderInit( _MagicNumber );
//---- À òåïåðü ñìîòðèì, åñòü ëè îòêðûòàÿ ïîçèöèÿ:
if ( _Ticket > 0 )
{
//---- åñëè îòêðûòà ÁÀÉ-ïîçèöèÿ,
if ( _Type == OP_BUY )
{
//---- åñëè ee çàêðûâàòü,
if ( IsStopByeTrade(Shift) )
{
//---- çàêðûâàåì ïîçèöèþ
if ( !OrderClose( _Ticket, _Lots, Bid, 5, Green ) )
{
_GetLastError = GetLastError();
Print( "Îøèáêà OrderClose ¹ ", _GetLastError );
return(-1);
}
}
//---- åñëè ñèãíàë íå èçìåíèëñÿ, âûõîäèì - ïîêà ðàíî îòêðûâàòü íîâóþ ïîçèöèþ
else
{ // êñòàòè, ìîæåò ïîðà äâèãàòü ñòîï-ëîññ?
if ((_StopLoss==0 || _StopLoss < (EmaStopValue-(Zazor+5)*Point )) && (EmaStopValue-Zazor*Point ) < Bid)
{
if (!OrderModify(_Ticket,_OpenPrice,EmaStopValue-Zazor*Point,_TakeProfit,0,Blue))
{
_GetLastError = GetLastError();
Print( "Îøèáêà -0- OrderModify ¹ ", _GetLastError );
return(-1);
}
GlobalVariableSet( "AlexmanConcursExpert", 1);
}
if ((_StopLoss==0 || _StopLoss < _OpenPrice) && _Profit>500 )
{
if (!OrderModify(_Ticket,_OpenPrice,_OpenPrice,_TakeProfit,0,Blue))
{
_GetLastError = GetLastError();
Print( "Îøèáêà OrderModify ¹ ", _GetLastError );
return(-1);
}
GlobalVariableSet( "AlexmanConcursExpert", 1);
}
return(0);
}
}
//---- åñëè îòêðûòà ÑÅËË-ïîçèöèÿ,
if ( _Type == OP_SELL )
{
//---- åñëè åå çàêðûâàòü,
if ( IsStopSellTrade(Shift) )
{
//---- çàêðûâàåì ïîçèöèþ
if ( !OrderClose( _Ticket, _Lots, Ask, 5, Red ) )
{
_GetLastError = GetLastError();
Print( "Îøèáêà OrderClose ¹ ", _GetLastError );
return(-1);
}
}
//---- åñëè ñèãíàë íå èçìåíèëñÿ, âûõîäèì - ïîêà ðàíî îòêðûâàòü íîâóþ ïîçèöèþ
else
{ // êñòàòè, ìîæåò ïîðà äâèãàòü ñòîï-ëîññ?
if ((_StopLoss==0 || _StopLoss > (EmaStopValue+spraid+(Zazor+5)*Point )) && (EmaStopValue+Zazor*Point ) > Bid)
{
if (!OrderModify(_Ticket,_OpenPrice,EmaStopValue+spraid+Zazor*Point,_TakeProfit,0,Blue))
{
_GetLastError = GetLastError();
Print( "Îøèáêà -1- OrderModify ¹ ", _GetLastError );
return(-1);
}
GlobalVariableSet( "AlexmanConcursExpert", 1);
}
if ((_StopLoss==0 || _StopLoss > _OpenPrice) && _Profit>500 )
{
if (!OrderModify(_Ticket,_OpenPrice,_OpenPrice,_TakeProfit,0,Blue))
{
_GetLastError = GetLastError();
Print( "Îøèáêà OrderModify ¹ ", _GetLastError );
return(-1);
}
GlobalVariableSet( "AlexmanConcursExpert", 1);
}
return(0);
}
}
}
//---- åñëè íåò ïîçèöèè, îòêðûòîé ýêñïåðòîì ( _Ticket == 0 )
//- òîðãóåì òîëüêî åñëè êîí÷èëñÿ ñòàðûé ñèãíàë
if ((IsByeTrade(Shift+5) && IsStopByeTrade(Shift)) || (IsSellTrade(Shift+5) && IsStopSellTrade(Shift)) )
GlobalVariableSet( "AlexmanConcursExpert", 0);
//-- Îòäûõàåì, åñëè â ýòîò ÷àñ ñðàáîòàë ñòîïëîññ
if(GlobalVariableGet("AlexmanConcursExpert") ==1) return(0);
//---- Íåïëîõî áû îòêðûòü ïîçèöèþ, íàïðèìåð êóïèòü
if ( IsByeTrade(Shift) && EmaStopValue<=Low[Shift] && EmaStopValue < Bid)
{
//---- îòêðûâàåì ÁÀÉ ïîçèöèþ
if ( OrderSend( Symbol(), OP_BUY, Lots, Ask, 5, 0.0, 0.0, "by AlexmanConcursExpert.mq4",
_MagicNumber, 0, Green ) < 0 )
{
_GetLastError = GetLastError();
Print( "Îøèáêà OrderSend ¹ ", _GetLastError );
return(-1);
}
return(0);
}
//---- Èëè ìîæåò ïðîäàòü?,
if ( IsSellTrade(Shift) && EmaStopValue>=High[Shift] && EmaStopValue> Ask)
{
//---- îòêðûâàåì ÑÅËË ïîçèöèþ
if ( OrderSend( Symbol(), OP_SELL, Lots, Bid, 5, 0.0, 0.0, "by AlexmanConcursExpert.mq4",
_MagicNumber, 0, Red ) < 0 )
{
_GetLastError = GetLastError();
Print( "Îøèáêà OrderSend ¹ ", _GetLastError );
return(-1);
}
return(0);
}
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
---