Xin chào
Tôi đang sử dụng chỉ báo sau hoạt động tốt khi tự in các mũi tên, v.v. Mẫu mã bên dưới.
#chỉ số thuộc tính_chart_window
#property indior_buffers 2
#property indior_color1 Vôi
#property indior_width1 1
#property indior_color2 Vàng
#property indior_width2 1
bool bên ngoài UseAlert = true;
bên ngoài int BarsToCount = 1000;
nhân đôi SarUpSig[];
nhân đôi SarDownSig[];
ngày giờ TT;
int init()
{
//---- trong nhà
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,233);
SetIndexBuffer(0,SarUpSig);
SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,234);
SetIndexBuffer(1,SarDownSig);
TT=iTime(Ký hiệu(),0,0);
//----
trả lại (0);
}
int bắt đầu()
{
giới hạn int;
int Counted_bars=IndiorCounted();
//---- thanh đếm cuối cùng sẽ được kể lại
if(counted_barsgt;0)count_bars--;
giới hạn=Bars-counted_bars;
//---- macd được tính trong bộ đệm thứ nhất
if(Period()!=PERIOD_H1)
{
trả lại (0);
}
nếu (BarsToCount lt; giới hạn)
giới hạn = BarsToCount;
for(int i=giới hạn; igt;=0; i--)
{
ngày giờ thời gian = iTime(Ký hiệu(),0,i);
int shiftD1 = iBarShift(Symbol(), PERIOD_D1, time, false);
int shiftH4 = iBarShift(Ký hiệu(), PERIOD_H4, thời gian, sai);
int shiftH1 = iBarShift(Ký hiệu(),PERIOD_H1,thời gian,sai);
tăng gấp đôi OsMa1 = iCustom(Symbol(),PERIOD_H1,OsMA,30,200,5,0,shiftH1 );
tăng gấp đôi OsMa2 = iCustom(Symbol(),PERIOD_H1,OsMA,5,35,35,0,shiftH1) ;
gấp đôi POsMa1 = iCustom(Symbol(),PERIOD_H1,OsMA,30,200,5,0,shiftH1 1);
gấp đôi POsMa2 = iCustom(Symbol(),PERIOD_H1,OsMA,5,35,35,0,shiftH1 1);
//double Up_ST = iCustom(Symbol(),0,4xRider Tín hiệu MẠNH-TREND v2,14,2,i);
//double Dn_ST = iCustom(Symbol(),0,4xRider Tín hiệu XU HƯỚNG MẠNH v2,14,1,i);
gấp đôi SARD1 = iSAR(Symbol(),PERIOD_D1,0.22,0.2,shiftD1);
double SARH4 = iSAR(Symbol(),PERIOD_H4,0.05,0.2,shiftH4);
double SARH1 = iSAR(Symbol(),PERIOD_H1,0.01,0.2,shiftH1);
//double SARlast = iSAR(Symbol(),0,0.02,0.2,i 1);
double CLOSED1 = iClose(Symbol(),PERIOD_D1,shiftD1);
double CLOSEH4 = iClose(Symbol(),PERIOD_H4,shiftH4);
double CLOSEH1 = iClose(Symbol(),PERIOD_H1,shiftH1);
nhân đôi PSARD1 = iSAR(Symbol(),PERIOD_D1,0.22,0.2,shiftD1 1);
nhân đôi PSARH4 = iSAR(Symbol(),PERIOD_H4,0.05,0.2,shiftH4 1);
nhân đôi PSARH1 = iSAR(Ký hiệu(),PERIOD_H1,0.01,0.2,shiftH1 1);
//double SARlast = iSAR(Symbol(),0,0.02,0.2,i 1);
nhân đôi PCLOSED1 = iClose(Symbol(),PERIOD_D1,shiftD1 1);
nhân đôi PCLOSEH4 = iClose(Symbol(),PERIOD_H4,shiftH4 1);
nhân đôi PCLOSEH1 = iClose(Symbol(),PERIOD_H1,shiftH1 1);
SarUpSig[i]=EMPTY_VALUE;
SarDownSig[i]=EMPTY_VALUE;
chuỗi mua;
//MUA
//if(Up_ST!=EMPTY_VALUE)
//{
//SarUpSig[1] = 1,6094;
if(SarUpSig[i 1] != EMPTY_VALUE SARH1lt;CLOSEH1 OsMa2gt;0 SARH4lt;CLOSEH4)
{
SarUpSig[i] = SARH1;
if(TT!=iTime(Symbol(),0,0)UseAlert)
{
//chuỗi thời gian = TimeToStr(TimeCurrent());
Cảnh báo(4xRider(MUA) Symbol());
PlaySound(alert.wav);
TT=iTime(Ký hiệu(),0,0);
}
}
if((PSARH4gt;PCLOSEH4POsMa1lt;0PSARH1gt;PCLOSEH1)
(SARH4lt;CLOSEH4OsMa1gt;0SARH1lt;CLOSEH1SARD1lt;CL OSED1) OsMa2gt;0)
{
SarUpSig[i] = SARH1;
mua = giao dịch;
if(TT!=iTime(Symbol(),0,0)UseAlert)
{
//chuỗi thời gian = TimeToStr(TimeCurrent());
Alert(4xRider (MUA) Symbol());
PlaySound(alert.wav);
TT=iTime(Ký hiệu(),0,0);
}
}
//}
chuỗi bán;
//BÁN
//if(Dn_ST!=EMPTY_VALUE)
//{
if(SarDownSig[i 1] != EMPTY_VALUE SARH1gt;CLOSEH1 OsMa2lt;0 SARH4gt;CLOSEH4)
{
SarDownSig[i] = SARH1;
if(TT!=iTime(Symbol(),0,0)UseAlert)
{
//chuỗi thời gian = TimeToStr(TimeCurrent());
Alert(4xRider (SELL) Symbol());
PlaySound(alert.wav);
TT=iTime(Ký hiệu(),0,0);
}
}
if((PSARH4lt;PCLOSEH4POsMa1gt;0PSARH1lt;PCLOSEH1)
(SARH4gt;CLOSEH4OsMa1lt;0SARH1gt;CLOSEH1SARD1gt;CL OSED1) OsMa2lt;0)
{
SarDownSig[i] = SARH1;
if(TT!=iTime(Symbol(),0,0)UseAlert)
{
//chuỗi thời gian = TimeToStr(TimeCurrent());
Alert(4xRider (SELL) Symbol());
PlaySound(alert.wav);
TT=iTime(Ký hiệu(),0,0);
}
}
//}
//BÁN
}
//----
//Nhận xét (Từ indior: , DoubleToStr(SarUpSig[1], Digits));
trả lại (0);
}
Tôi đang sử dụng EA để đọc các giá trị như sau.
#define INDI MyIndior
gấp đôi IndiUpVal = iCustom(NULL, 0, INDI, sai, 5, 0, 1);
gấp đôi IndiDownVal = iCustom(NULL, 0, INDI, false, 5, 1, 1);
Nhận xét(IndiUpVal: D2S(IndiUpVal) . IndiUpVal: D2S(IndiDownVal));
D2S = DoubleToString có chữ số
Bất kể tôi làm gì, iCustom trả về EMPTY_VAL.
Nếu tôi In giá trị từ bên trong chỉ báo vào đúng thời điểm SarUpSig[1]
sẽ trả về các giá trị chính xác. Nhưng iCustom luôn cung cấp EMPTY_VAL.
Tại sao?
Bất kỳ trợ giúp nào cũng được đánh giá rất cao.