
//+------------------------------------------------------------------+
//| MACDDiv.mq4 |
//| Copyright 2015, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, AM2"
#property link "http://www.forexsystems.biz"
#property description "Simple expert advisor"
//--- Inputs
extern int StopLoss = 500;
extern int TakeProfit = 500;
extern int Slip = 30;
extern int Magic = 123;
extern double Lots = 0.1;
//----
extern int SnakePeriod = 16;
extern int InpDepth = 12;
extern int InpDeviation = 5;
extern int InpBackstep = 3;
int t=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 UP=iCustom(Symbol(),0,"FX5 MACD_Divergence V1.1",0,2);
double DN=iCustom(Symbol(),0,"FX5 MACD_Divergence V1.1",1,2);
//--- sell conditions
if(DN!=2147483647)
{
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);
}
//--- buy conditions
if(UP!=2147483647)
{
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);
}
//---
}
//+------------------------------------------------------------------+
//| Check for close order conditions |
//+------------------------------------------------------------------+
void ClosePos()
{
//--- get Ind
double UP=iCustom(Symbol(),0,"FX5 MACD_Divergence V1.1",0,2);
double DN=iCustom(Symbol(),0,"FX5 MACD_Divergence V1.1",1,2);
//---
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderMagicNumber()==Magic || OrderSymbol()==Symbol())
{
//--- check order type
if(OrderType()==OP_BUY)
{
if(DN!=2147483647)
{
CloseAll();
}
}
if(OrderType()==OP_SELL)
{
if(UP!=2147483647)
{
CloseAll();
}
}
}
}
}
return;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CloseAll()
{
bool del;
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) del=OrderClose(OrderTicket(),OrderLots(),Bid,Slip,White);
if(OrderType()==OP_SELL) del=OrderClose(OrderTicket(),OrderLots(),Bid,Slip,White);
}
}
}
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);
}
//+------------------------------------------------------------------+
//| OnTick function |
//+------------------------------------------------------------------+
void OnTick()
{
double UP=iCustom(Symbol(),0,"FX5 MACD_Divergence V1.1",0,2);
double DN=iCustom(Symbol(),0,"FX5 MACD_Divergence V1.1",1,2);
if(t!=Time[0])
{
OpenPos();
t=Time[0];
}
//ClosePos();
Comment("\n UP: ",UP,
"\n DN: ",DN);
}
//+------------------------------------------------------------------+
проходил курсы у Марии Максимовой
ZigZag!!!Зачем кричать? Я хорошо слышу!
На скрине я не знаю как показать
//--- Inputs
extern int StopLoss = 500; //лось
extern int TakeProfit = 1500; //язь
extern int BULevel = 300; //уровень БУ
extern int BUPoint = 20; //пункты БУ
extern int BuySell = 0; //0-нет позы 1-бай 2-селл для теста
extern int Slip = 30; //реквот
extern int Magic = 123; //магик
extern double Lots = 0.1; //лот
//+------------------------------------------------------------------+
//| Snake.mq4 |
//| Copyright 2015, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, AM2"
#property link "http://www.forexsystems.biz"
#property description "Snake simple expert advisor"
//--- Inputs
extern int StopLoss = 500;
extern int TakeProfit = 500;
extern int Slip = 30;
extern int Magic = 123;
extern double Lots = 0.1;
//----
extern int SnakePeriod=16;
int t=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 Snake1=iCustom(Symbol(),0,"Snake",SnakePeriod,0,1);
double Snake2=iCustom(Symbol(),0,"Snake",SnakePeriod,0,2);
double ZZ0=GetExtremumZZPrice(NULL,0,0,12,5,3);
double ZZ1=GetExtremumZZPrice(NULL,0,1,12,5,3);
double ZZ2=GetExtremumZZPrice(NULL,0,2,12,5,3);
double ZZ3=GetExtremumZZPrice(NULL,0,3,12,5,3);
//--- sell conditions
if(Snake1<Snake2)
{
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);
}
//--- buy conditions
if(Snake1>Snake2)
{
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);
}
//--- sell conditions
if(Snake1<Snake2 && ZZ0<ZZ1 && ZZ1<ZZ3)
{
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);
}
//--- buy conditions
if(Snake1>Snake2 && ZZ0>ZZ1 && ZZ1>ZZ3)
{
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);
}
//---
}
//+------------------------------------------------------------------+
//| Check for close order conditions |
//+------------------------------------------------------------------+
void ClosePos()
{
bool c;
//--- get Ind
double Snake1=iCustom(Symbol(),0,"Snake",SnakePeriod,0,1);
double Snake2=iCustom(Symbol(),0,"Snake",SnakePeriod,0,2);
//---
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderMagicNumber()==Magic || OrderSymbol()==Symbol())
{
//--- check order type
if(OrderType()==OP_BUY)
{
if(Snake1<Snake2)
{
c=OrderClose(OrderTicket(),OrderLots(),Bid,Slip,White);
}
break;
}
if(OrderType()==OP_SELL)
{
if(Snake1>Snake2)
{
c=OrderClose(OrderTicket(),OrderLots(),Ask,Slip,White);
}
break;
}
}
}
}
//---
}
//+------------------------------------------------------------------+
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);
}
//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Версия : 07.10.2006 |
//| Описание : Возвращает экстремум ЗигЗага по его номеру. |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| sy - наименование инструмента (NULL или "" - текущий символ) |
//| tf - таймфрейм ( 0 - текущий ТФ) |
//| ne - номер экстремума ( 0 - последний) |
//| dp - ExtDepth |
//| dv - ExtDeviation |
//| bs - ExtBackstep |
//+----------------------------------------------------------------------------+
double GetExtremumZZPrice(string sy="",int tf=0,int ne=0,int dp=12,int dv=5,int bs=3)
{
if(sy=="" || sy=="0") sy=Symbol();
double zz;
int i,k=iBars(sy,tf),ke=0;
for(i=1; i<k; i++)
{
zz=iCustom(sy,tf,"ZigZag",dp,dv,bs,0,i);
if(zz!=0)
{
ke++;
if(ke>ne) return(zz);
}
}
Print("GetExtremumZZPrice(): Экстремум ЗигЗага номер ",ne," не найден");
return(0);
}
//+------------------------------------------------------------------+
//| OnTick function |
//+------------------------------------------------------------------+
void OnTick()
{
double ZZ0=GetExtremumZZPrice(NULL,0,0,12,5,3);
double ZZ1=GetExtremumZZPrice(NULL,0,1,12,5,3);
double ZZ2=GetExtremumZZPrice(NULL,0,2,12,5,3);
double ZZ3=GetExtremumZZPrice(NULL,0,3,12,5,3);
if(CountTrades()<1 && t!=Time[0])
{
OpenPos();
t=Time[0];
}
else ClosePos();
Comment("\n ZZ0: ",ZZ0,
"\n ZZ1: ",ZZ1,
"\n ZZ2: ",ZZ2,
"\n ZZ3: ",ZZ3);
}
//+------------------------------------------------------------------+
Не совсем то что хотелось.
Никакого паттерна нет.
на продажу столбики гистограммы убывали и 2 столбика в плюс.
//+------------------------------------------------------------------+
//| Quantum.mq4 |
//+------------------------------------------------------------------+
//2012Jan27 mod for mer071898
#property copyright "Copyright © 2010, zznbrm"
//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_width1 5
#property indicator_width2 5
//---- input parameters
extern int eintDepth3=300;
//---- indicator buffers
double gadblUp3[];
double gadblDn3[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
SetIndexBuffer(0,gadblUp3);
SetIndexEmptyValue(0,0.0);
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,250);
SetIndexLabel(0,NULL);
SetIndexBuffer(1,gadblDn3);
SetIndexEmptyValue(1,0.0);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,250);
SetIndexLabel(1,NULL);
IndicatorDigits(5);
//---- name for DataWindow and indicator subwindow label
IndicatorShortName("Quantum("+eintDepth3+")");
return( 0 );
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
return( 0 );
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void PutText(const string text,double price,datetime time)
{
ObjectsDeleteAll(0, OBJ_TEXT);
const string name="Text"+TimeToStr(TimeCurrent());
//--- создадим объект "Текст"
ObjectCreate(0,name,OBJ_TEXT,0,time,price);
//--- установим текст
ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
ObjectSetInteger(0,name,OBJPROP_FONTSIZE,10);
//--- установим способ привязки
ObjectSetInteger(0,name,OBJPROP_ANCHOR,ANCHOR_RIGHT_UPPER);
//--- установим цвет
ObjectSetInteger(0,name,OBJPROP_COLOR,Yellow);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
if(counted_bars < 0) return (-1);
if(counted_bars>0) counted_bars--;
int intLimit=Bars-counted_bars;
int intLow3,intHigh3;
for(int inx=intLimit; inx>=0; inx--)
{
gadblUp3[inx] = 0.0;
gadblDn3[inx] = 0.0;
intLow3=iLowest(Symbol(),Period(),MODE_LOW,eintDepth3,inx);
if(intLow3==inx)
{
gadblUp3[inx]=Low[inx];
PutText(DoubleToString(Close[inx],Digits),Low[inx],Time[inx]);
}
intHigh3=iHighest(Symbol(),Period(),MODE_HIGH,eintDepth3,inx);
if(intHigh3==inx)
{
gadblDn3[inx]=High[inx];
PutText(DoubleToString(Close[inx],Digits),High[inx],Time[inx]);
}
}
return( 0 );
}
//+------------------------------------------------------------------+
Персональный Блог им. dipladog
Это мне ни о чем не говорит. Нужно четкое ТЗ.
AM2