Так же в настройках добавить количество открываемых ОРДЕРОВ ЧТОБЫ МОЖНО БЫЛО ПРОПИСЫВАТЬ ИХ ВРУЧНУЮ ОТ 1 ДО 30.
это как, когда у вас идет открытие закрытия при смене цвета?
Так же в настройках добавить количество открываемых ОРДЕРОВ ЧТОБЫ МОЖНО БЫЛО ПРОПИСЫВАТЬ ИХ ВРУЧНУЮ ОТ 1 ДО 30.
//+------------------------------------------------------------------+
//| KeyLevels
//| Facebook ID vishal koli Fx
//| |
//+------------------------------------------------------------------+
#property copyright "mishanya"
#property link "mishanya_fx@yahoo.com"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- input parameters
extern int barn=300;
extern int Length=6;
extern color color1=OrangeRed;
extern color color2=RoyalBlue;
//---- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexEmptyValue(0,0.0);
//SetIndexDrawBegin(0, barn);
//SetIndexStyle(0,DRAW_SECTION);
//SetIndexBuffer(0,ExtMapBuffer1);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
ObjectDelete("Target2 line");
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
int shift,Swing,Swing_n,uzl,i,zu,zd;
double PointA,PointB,PointC,Target2,Target3;
double LL,HH,BH,BL;
double Uzel[10000][3];
string text;
if(Bars<barn)
return(-1);
if(barn>=ArraySize(Uzel)/3)
return(-1);
// loop from first bar to current bar (with shift=0)
Swing_n=0;
Swing=0;
uzl=0;
BH=High[barn];
BL=Low[barn];
zu=barn;
zd=barn;
for(shift=barn; shift>=0; shift--)
{
LL=10000000;
HH=-100000000;
for(i=shift+Length; i>=shift+1; i--)
{
if(Low[i]< LL)
{
LL=Low[i];
}
if(High[i]>HH)
{
HH=High[i];
}
}
if(Low[shift]<LL && High[shift]>HH)
{
Swing=2;
if(Swing_n==1)
{
zu=shift+1;
}
if(Swing_n==-1)
{
zd=shift+1;
}
}
else
{
if(Low[shift]<LL)
{
Swing=-1;
}
if(High[shift]>HH)
{
Swing=1;
}
}
if(Swing!=Swing_n && Swing_n!=0)
{
if(Swing==2)
{
Swing=-Swing_n;
BH = High[shift];
BL = Low[shift];
}
uzl=uzl+1;
if(Swing==1)
{
Uzel[uzl][1]=zd;
Uzel[uzl][2]=BL;
}
if(Swing==-1)
{
Uzel[uzl][1]=zu;
Uzel[uzl][2]=BH;
}
BH = High[shift];
BL = Low[shift];
}
if(Swing==1)
{
if(High[shift]>=BH)
{
BH=High[shift];
zu=shift;
}
}
if(Swing==-1)
{
if(Low[shift]<=BL)
{
BL=Low[shift];
zd=shift;
}
}
Swing_n=Swing;
}
for(i=1; i<=uzl; i++)
{
//text=DoubleToStr(Uzel[i][1],0);
//text=;
//mv=StrToInteger(DoubleToStr(Uzel[i][1],0));
//ExtMapBuffer1[mv]=Uzel[i][2];
}
PointA = Uzel[uzl-2][2];
PointB = Uzel[uzl-1][2];
PointC = Uzel[uzl][2];
Target2=PointB-PointA+PointC;
Target3=NormalizeDouble((PointB-PointA)*2.618+PointC,4);
int L=10;
ObjectDelete(0,"Target2 Line");
ObjectCreate("Target2 Line",OBJ_TREND,0,iTime(NULL,0,Target2),Target2,
iTime(NULL,0,Target2)+1000*60*L,Target2);
ObjectSet("Target2 line",OBJPROP_COLOR,color1);
ObjectSet("Target2 line",OBJPROP_WIDTH,2);
ObjectSet("Target2 line",OBJPROP_STYLE,STYLE_SOLID);
ObjectSet("Target2 line",OBJPROP_RAY,true);
ObjectDelete(0,"Target3 Line");
ObjectCreate("Target3 Line",OBJ_TREND,0,iTime(NULL,0,Target3),Target3,
iTime(NULL,0,Target3)+1000*60*L,Target3);
ObjectSet("Target3 line",OBJPROP_COLOR,color2);
ObjectSet("Target3 line",OBJPROP_WIDTH,2);
ObjectSet("Target3 line",OBJPROP_STYLE,STYLE_SOLID);
ObjectSet("Target3 line",OBJPROP_RAY,true);
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Joy.mq4 |
//| Copyright 2021, AM2 |
//| http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, AM2"
#property link "http://www.forexsystems.biz"
#property version "1.00"
#property strict
//--- Inputs
extern double Lots = 0.1; // лот
extern double KLot = 2; // умножение лота
extern double MaxLot = 5; // максимальный лот
extern int StopLoss = 2000; // лось
extern int TakeProfit = 3000; // язь
extern int Slip = 30; // реквот
extern int Shift = 1; // бар индикатора
extern int CloseOn = 1; // 1-закрытие в конце работы
extern int Magic = 123; // магик
extern string IndName = "Solar Wind Joy + TMA AA MTF R+TT";
extern string IndName2 = "FQ — TBS Buffering Zones-";
datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
Comment("");
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
Comment("");
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
{
int r=0;
color clr=Green;
double sl=0,tp=0;
if(type==1 || type==3 || type==5)
{
clr=Red;
if(StopLoss>0)
sl=NormalizeDouble(price+StopLoss*_Point,_Digits);
if(TakeProfit>0)
tp=NormalizeDouble(price-TakeProfit*_Point,_Digits);
}
if(type==0 || type==2 || type==4)
{
clr=Blue;
if(StopLoss>0)
sl=NormalizeDouble(price-StopLoss*_Point,_Digits);
if(TakeProfit>0)
tp=NormalizeDouble(price+TakeProfit*_Point,_Digits);
}
r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,_Digits),Slip,sl,tp,"",Magic,0,clr);
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()<2)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double Lot()
{
double lot=Lots;
for(int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderProfit()>0)
break;
if(OrderProfit()<0)
{
lot=OrderLots()*KLot;
break;
}
}
}
}
if(lot>MaxLot)
lot=Lots;
return(lot);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1)
{
bool cl;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
if(OrderType()==0 && (ot==0 || ot==-1))
{
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,_Digits),Slip,White);
}
if(OrderType()==1 && (ot==1 || ot==-1))
{
RefreshRates();
cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,_Digits),Slip,White);
}
}
}
}
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
double blu1 = iCustom(NULL,0,IndName,0,Shift);
double red1 = iCustom(NULL,0,IndName,1,Shift);
double blu2 = iCustom(NULL,0,IndName,0,Shift+1);
double red2 = iCustom(NULL,0,IndName,1,Shift+1);
bool buy = blu1!=0 && red2!=0;
bool sell = red1!=0 && blu2!=0;
if(t!=Time[0])
{
if(CountTrades()<1)
{
if(buy)
{
PutOrder(0,Ask);
}
if(sell)
{
PutOrder(1,Bid);
}
}
if(CloseOn>0)
{
if(buy)
{
CloseAll(1);
}
if(sell)
{
CloseAll(0);
}
}
t=Time[0];
}
Comment("\n blu: ",blu1,
"\n red: ",red1);
}
//+------------------------------------------------------------------+
AM2