//+------------------------------------------------------------------+
//| FiboDay.mq4 |
//| Copyright 2015, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict
double LastOpen=0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Проверяет значения точек привязки "Уровней Фибоначчи" и для |
//| пустых значений устанавливает значения по умолчанию |
//+------------------------------------------------------------------+
void ChangeFiboLevelsEmptyPoints(datetime &time1,double &price1,
datetime &time2,double &price2)
{
//--- если время второй точки не задано, то она будет на текущем баре
if(!time2)
time2=TimeCurrent();
//--- если цена второй точки не задана, то она будет иметь значение Bid
if(!price2)
price2=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//--- если время первой точки не задано, то она лежит на 9 баров левее второй
if(!time1)
{
//--- массив для приема времени открытия 10 последних баров
datetime temp[10];
CopyTime(Symbol(),Period(),time2,10,temp);
//--- установим первую точку на 9 баров левее второй
time1=temp[0];
}
//--- если цена первой точки не задана, то сдвинем ее на 200 пунктов ниже второй
if(!price1)
price1=price2-200*SymbolInfoDouble(Symbol(),SYMBOL_POINT);
}
//+------------------------------------------------------------------+
//| Cоздает "Уровни Фибоначчи" по заданным координатам |
//+------------------------------------------------------------------+
bool FiboLevelsCreate(const long chart_ID=0, // ID графика
const string name="FiboLevels", // имя объекта
const int sub_window=0, // номер подокна
datetime time1=0, // время первой точки
double price1=0, // цена первой точки
datetime time2=0, // время второй точки
double price2=0, // цена второй точки
const color clr=clrRed, // цвет объекта
const ENUM_LINE_STYLE style=STYLE_SOLID, // стиль линии объекта
const int width=1, // толщина линии объекта
const bool back=false, // на заднем плане
const bool selection=true, // выделить для перемещений
const bool ray_right=false, // продолжение объекта вправо
const bool hidden=true, // скрыт в списке объектов
const long z_order=0) // приоритет на нажатие мышью
{
//--- установим координаты точек привязки, если они не заданы
ChangeFiboLevelsEmptyPoints(time1,price1,time2,price2);
//--- сбросим значение ошибки
ResetLastError();
//--- создадим "Уровни Фибоначчи" по заданным координатам
if(!ObjectCreate(chart_ID,name,OBJ_FIBO,sub_window,time1,price1,time2,price2))
{
Print(__FUNCTION__,
": не удалось создать \"Уровни Фибоначчи\"! Код ошибки = ",GetLastError());
return(false);
}
//--- установим цвет
ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- установим стиль линии
ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- установим толщину линии
ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- отобразим на переднем (false) или заднем (true) плане
ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- включим (true) или отключим (false) режим выделения объекта для перемещений
//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект
//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection
//--- по умолчанию равен true, что позволяет выделять и перемещать этот объект
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- включим (true) или отключим (false) режим продолжения отображения объекта вправо
ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- установи приоритет на получение события нажатия мыши на графике
ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- успешное выполнение
return(true);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
double up=iHigh(NULL,PERIOD_D1,1);
double dn=iLow(NULL,PERIOD_D1,1);
if(LastOpen!=Open[0])
{
if(Open[1]<up && Close[1]>up) Alert(Symbol()+" Пробили верхний стольник!!!");
if(Open[1]>dn && Close[1]<dn) Alert(Symbol()+" Пробили нижний стольник!!!");
LastOpen=Open[0];
}
ObjectDelete(0,"Fibo");
FiboLevelsCreate(0,"Fibo",0,Time[0],up,Time[1],dn,Red,STYLE_SOLID,1,false,true,false,false,0);
ObjectSet("Fibo",OBJPROP_FIBOLEVELS,8);
ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+0,0.0);
ObjectSetFiboDescription("Fibo",0,"100.0 (%$)");
ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+1,1.0);
ObjectSetFiboDescription("Fibo",1,"100.0 (%$)");
ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+2,1.236);
ObjectSetFiboDescription("Fibo",2,"123.6 (%$)");
ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+3,-0.236);
ObjectSetFiboDescription("Fibo",3,"123.6 (%$)");
ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+4,1.382);
ObjectSetFiboDescription("Fibo",4,"138.2 (%$)");
ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+5,-0.382);
ObjectSetFiboDescription("Fibo",5,"138.2 (%$)");
ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+6,1.618);
ObjectSetFiboDescription("Fibo",6,"161.8 (%$)");
ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+7,-0.618);
ObjectSetFiboDescription("Fibo",7,"161.8 (%$)");
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| ValeriyVist.mq4 |
//| Copyright 2015, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, AM2"
#property link "http://www.forexsystems.biz"
#property description "Not simple expert advisor"
//------- Внешние параметры советника --------------------+
extern double Lot = 0.1; // Лот buy/sell ордера
extern double Lot1 = 0.2; // Лот 1-го limit ордера
extern double Lot2 = 0.3; // Лот 2-го limit ордера
extern double Lot3 = 0.4; // Лот 3-го limit ордера
extern double Lot4 = 0.5; // Лот 4-го limit ордера
extern double Lot5 = 0.6; // Лот 5-го limit ордера
extern double Lot6 = 0.7; // Лот 6-го limit ордера
extern double Lot7 = 0.8; // Лот 7-го limit ордера
extern double Lot8 = 0.9; // Лот 8-го limit ордера
extern double Lot9 = 1.0; // Лот 9-го limit ордера
extern double Lot10 = 1.1; // Лот 10-го limit ордера
extern int Step1 = 100; // Шаг 1-го limit ордера
extern int Step2 = 200; // Шаг 2-го limit ордера
extern int Step3 = 300; // Шаг 3-го limit ордера
extern int Step4 = 400; // Шаг 4-го limit ордера
extern int Step5 = 500; // Шаг 5-го limit ордера
extern int Step6 = 600; // Шаг 6-го limit ордера
extern int Step7 = 700; // Шаг 7-го limit ордера
extern int Step8 = 800; // Шаг 8-го limit ордера
extern int Step9 = 900; // Шаг 9-го limit ордера
extern int Step10 = 1000; // Шаг 10-го limit ордера
extern int TP = 100; // Take profit buy/sell ордера
extern int TP1 = 200; // Take profit после 1-го limit ордера
extern int TP2 = 300; // Take profit после 2-го limit ордера
extern int TP3 = 400; // Take profit после 3-го limit ордера
extern int TP4 = 500; // Take profit после 4-го limit ордера
extern int TP5 = 600; // Take profit после 5-го limit ордера
extern int TP6 = 700; // Take profit после 6-го limit ордера
extern int TP7 = 800; // Take profit после 7-го limit ордера
extern int TP8 = 900; // Take profit после 8-го limit ордера
extern int TP9 = 1000; // Take profit после 9-го limit ордера
extern int TP10 = 1100; // Take profit после 10-го limit ордера
extern int SL = 400; // Stop Loss для всех ордеров
extern int Slip = 30; // Проскальзывание цены
extern int Magic = 123; // Идентификатор ордера
int k=0;
int tp[10],step[10];
double lot[10];
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
tp[0]=TP;
tp[1]=TP1;
tp[2]=TP2;
tp[3]=TP3;
tp[4]=TP4;
tp[5]=TP5;
tp[6]=TP6;
tp[7]=TP7;
tp[8]=TP8;
tp[9]=TP9;
tp[10]=TP10;
step[0]=Step1;
step[1]=Step1;
step[2]=Step2;
step[3]=Step3;
step[4]=Step4;
step[5]=Step5;
step[6]=Step6;
step[7]=Step7;
step[8]=Step8;
step[9]=Step9;
step[10]=Step10;
lot[0]=Lot;
lot[1]=Lot1;
lot[2]=Lot2;
lot[3]=Lot3;
lot[4]=Lot4;
lot[5]=Lot5;
lot[6]=Lot6;
lot[7]=Lot7;
lot[8]=Lot8;
lot[9]=Lot9;
lot[10]=Lot10;
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason) { }
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int LastDealResult()
{
int result=0;
if(OrdersHistoryTotal()==0)
{
result=0;
}
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderProfit()>0)
{
result=1;//tp
}
if(OrderProfit()<0)
{
result=2;//sl
}
}
return(result);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int LastDealType()
{
int type=0;
if(OrdersHistoryTotal()==0)
{
type=0;
}
if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderType()==OP_BUY)
{
type=1;//buy
}
if(OrderType()==OP_SELL)
{
type=2;//sell
}
}
return(type);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void DelBuyLimitOrder()
{
bool del;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
{
if(OrderMagicNumber()!=Magic || OrderSymbol()!=Symbol()) continue;
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderType()==OP_BUYLIMIT) del=OrderDelete(OrderTicket());
}
}
}
return;
}
//+------------------------------------------------------------------+
void DelSellLimitOrder()
{
bool del;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
{
if(OrderMagicNumber()!=Magic || OrderSymbol()!=Symbol()) continue;
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderType()==OP_SELLLIMIT) del=OrderDelete(OrderTicket());
}
}
}
return;
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
int res=0;
double pr=0;
if(k>10) k=0;
//когда нет позиций
if(CountTrades()<1)
{
res=OrderSend(Symbol(),OP_BUY,Lot,Ask,Slip,Ask-SL*Point,Ask+TP*Point,"",Magic,0,Blue);
res=OrderSend(Symbol(),OP_SELL,Lot,Bid,Slip,Bid+SL*Point,Bid-TP*Point,"",Magic,0,Red);
pr=Ask-step[k]*Point;
res=OrderSend(Symbol(),OP_BUYLIMIT,lot[k],pr,0,pr-SL*Point,Ask+tp[k]*Point,"",Magic,0,Blue);
pr=Bid+step[k]*Point;
res=OrderSend(Symbol(),OP_SELLLIMIT,lot[k],pr,0,pr+SL*Point,Bid-tp[k]*Point,"",Magic,0,Red);
k++;
return;
}
//когда есть позы и sell закрылся по ТП
if(CountTrades()>0 && LastDealResult()==1 && LastDealType()==2)
{
DelSellLimitOrder();
res=OrderSend(Symbol(),OP_SELL,Lot,Bid,Slip,Bid+SL*Point,Bid-TP*Point,"",Magic,0,Red);
pr=Bid+step[k]*Point;
res=OrderSend(Symbol(),OP_SELLLIMIT,lot[k],pr,0,pr+SL*Point,Bid-tp[k]*Point,"",Magic,0,Red);
k++;
return;
}
//когда есть позы и buy закрылся по ТП
if(CountTrades()>0 && LastDealResult()==1 && LastDealType()==1)
{
DelBuyLimitOrder();
res=OrderSend(Symbol(),OP_BUY,Lot,Ask,Slip,Ask-SL*Point,Ask+TP*Point,"",Magic,0,Blue);
pr=Ask-step[k]*Point;
res=OrderSend(Symbol(),OP_BUYLIMIT,lot[k],pr,0,pr-SL*Point,Ask+tp[k]*Point,"",Magic,0,Blue);
k++;
return;
}
Comment("\n TP: ",tp[k],
"\n Lot: ",lot[k],
"\n Step: ",step[k]);
}
//+------------------------------------------------------------------+
datetime NY=D'2015.01.01 00:00'; // время наступления 2015 года
datetime d1=D'1980.07.19 12:30:27'; // год месяц день часы минуты секунды
datetime d2=D'19.07.1980 12:30:27'; // равнозначно D'1980.07.19 12:30:27';
datetime d3=D'19.07.1980 12'; // равнозначно D'1980.07.19 12:00:00'
datetime d4=D'01.01.2004'; // равнозначно D'01.01.2004 00:00:00'
datetime compilation_date=__DATE__; // дата компиляции
datetime compilation_date_time=__DATETIME__; // дата и время компиляции
datetime compilation_time=__DATETIME__-__DATE__;// время компиляции
//--- примеры объявлений, на которые будут получены предупреждения компилятора
datetime warning1=D'12:30:27'; // равнозначно D'[дата компиляции] 12:30:27'
datetime warning2=D''; // равнозначно __DATETIME__
//+------------------------------------------------------------------+
//| MANonki.mq4 |
//| Copyright 2015, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict
//--- Inputs
extern double Lots = 0.1; // лот
extern int StopLoss = 500; // лось
extern int TakeProfit = 500; // язь
extern int Slip = 30; // реквот
extern string TradeTime="2015.11.06 15:10:30"; //время начала торгов
extern int Magic=123; // магик
extern string IndicatorProperties="--------------------";
extern int MAPeriod=12;
extern ENUM_TIMEFRAMES TimeFrame=PERIOD_D1;
double LastOpen=0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Check for open order conditions |
//+------------------------------------------------------------------+
void OpenPos()
{
int r=0;
double sl=0,tp=0;
//--- get Ind
double ma=iMA(NULL,TimeFrame,MAPeriod,0,MODE_SMA,PRICE_CLOSE,1);
double ma3=iMA(NULL,TimeFrame,MAPeriod,0,MODE_SMA,PRICE_CLOSE,3);
//--- sell conditions
//if(Bid<ma)
if(ma<ma3)
{
if(StopLoss>0) sl=NormalizeDouble(Bid+StopLoss*Point,Digits);
if(TakeProfit>0) tp=NormalizeDouble(Bid-TakeProfit*Point,Digits);
r=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slip,sl,tp,"",Magic,0,Red);
return;
}
//--- buy conditions
//if(Ask>ma)
if(ma>ma3)
{
if(StopLoss>0) sl=NormalizeDouble(Ask-StopLoss*Point,Digits);
if(TakeProfit>0) tp=NormalizeDouble(Ask+TakeProfit*Point,Digits);
r=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slip,sl,tp,"",Magic,0,Blue);
return;
}
//---
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(CountTrades()<1)
{
if(Open[0]!=LastOpen)
{
if(TimeCurrent()>=StringToTime(TradeTime))
{
OpenPos();
LastOpen=Open[0];
}
}
}
}
//+------------------------------------------------------------------+
открытие в «пятницу после первой среды месяца»
… DayOfWeek()==5 && Day()>=3 && Day()<=10 ...
if(ma>ma3 && DayOfWeek()==5 && Day()>=3 && Day()<=10 && Hour()==15)
//+------------------------------------------------------------------+
//| Nonki.mq4 |
//| Copyright 2015, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict
//--- Inputs
extern double Lots = 0.1; // лот
extern int StopLoss = 500; // лось
extern int TakeProfit = 500; // язь
extern int Slip = 30; // реквот
extern int Magic = 123; // магик
extern string IndicatorProperties="--------------------";
extern int MAPeriod=12;
extern ENUM_TIMEFRAMES TimeFrame=PERIOD_M1;
double LastOpen=0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Check for open order conditions |
//+------------------------------------------------------------------+
void OpenPos()
{
int r=0;
double sl=0,tp=0;
//--- get Ind
double ma=iMA(NULL,TimeFrame,MAPeriod,0,MODE_SMA,PRICE_CLOSE,1);
double ma3=iMA(NULL,TimeFrame,MAPeriod,0,MODE_SMA,PRICE_CLOSE,3);
//--- sell conditions
//if(Bid<ma && DayOfWeek()==5 && Day()>=3 && Day()<=10 && Hour()==15)
if(ma<ma3 && DayOfWeek()==5 && Day()>=3 && Day()<=10 && Hour()==15 && Minute()==0)
{
if(StopLoss>0) sl=NormalizeDouble(Bid+StopLoss*Point,Digits);
if(TakeProfit>0) tp=NormalizeDouble(Bid-TakeProfit*Point,Digits);
r=OrderSend(Symbol(),OP_SELL,Lots,NormalizeDouble(Bid,Digits),Slip,sl,tp,"",Magic,0,Red);
return;
}
//--- buy conditions
//if(Ask>ma && DayOfWeek()==5 && Day()>=3 && Day()<=10 && Hour()==15)
// с учетом первой среды DayOfWeek()==5 && Day()>=3 && Day()<=10
if(ma>ma3 && DayOfWeek()==5 && Day()>=3 && Day()<=10 && Hour()==15 && Minute()==0)
{
if(StopLoss>0) sl=NormalizeDouble(Ask-StopLoss*Point,Digits);
if(TakeProfit>0) tp=NormalizeDouble(Ask+TakeProfit*Point,Digits);
r=OrderSend(Symbol(),OP_BUY,Lots,NormalizeDouble(Ask,Digits),Slip,sl,tp,"",Magic,0,Blue);
return;
}
//---
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
if(CountTrades()<1 && Open[0]!=LastOpen)
{
OpenPos();
LastOpen=Open[0];
}
}
//+------------------------------------------------------------------+
открытие не в первую пятницу, а в «пятницу после первой среды месяца»
На до что бы открывал ордера наоборот, и если ордер уходит в минус, тогда выставляется, еще один ордер за последний фрактал.
На мгновение заскочили в прошлое
То есть открылся ордер на продажу, сразу открылся отложенный лимитный ордер за фракталом. Этот ордер тянется за фракталом.
Если цена пошла не в ту сторону, тогда за фрокталом выставляется стопордер но уже с увеличенным лотом.
//+------------------------------------------------------------------+
//| Fractal.mq4 |
//| Copyright 2015, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property description "Simple expert advisor"
//--- Inputs
extern int StopLoss = 500; // лось
extern int TakeProfit = 500; // язь
extern int MAPeriod = 12; // период МА
extern double Lots = 0.1; // лот
extern double MaxLot = 5; // максимальный лот
extern double KLot = 2; // увеличение лота
extern int Slip = 30; // проскальзывание
extern int Shift = 3; // сдвиг баров назад
extern int Count = 1; // количество открываемых ордеров
extern int MAGIC = 20150531;
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| Check for open order conditions |
//+------------------------------------------------------------------+
void OpenPos()
{
double up,dn,ma;
int res;
//--- get ind
up=iFractals(NULL,0,MODE_UPPER,Shift);
dn=iFractals(NULL,0,MODE_LOWER,Shift);
ma=iMA(NULL,0,MAPeriod,0,MODE_SMA,PRICE_CLOSE,1);
//--- sell conditions
if(up>0 && Close[0]<ma)
{
res=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,Bid+StopLoss*Point,Bid-TakeProfit*Point,"",MAGIC,0,Red);
return;
}
//--- buy conditions
if(dn>0 && Close[0]>ma)
{
res=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",MAGIC,0,Blue);
return;
}
//---
}
//+------------------------------------------------------------------+
//| OnTick function |
//+------------------------------------------------------------------+
void OnTick()
{
double up,dn;
//--- get ind
up=iFractals(NULL,0,MODE_UPPER,Shift);
dn=iFractals(NULL,0,MODE_LOWER,Shift);
if(CountTrades()<Count) OpenPos();
Comment("\n UP Fractal ",up,
"\n DN Fractal ",dn);
//---
}
//+------------------------------------------------------------------+
AM2