이 지표를 다운로드하십시오. 컴파일시 228행에 에러가 나서 그림을 못그렸으니 양해 부탁드립니다. 일반적으로 나는 MT5에 던질 때 사용하는 표시기를 원했기 때문에 여기에 있습니다. 직접 할 수는 없습니다. 어쩌면 당신은 나를 위해 그것을 다시 쓸 수 있습니다. 고맙습니다.
voinG : 이 지표를 다운로드하십시오. 컴파일시 228행에 에러가 나서 그림을 못그렸으니 양해 부탁드립니다. 일반적으로 나는 MT5에 던질 때 사용하는 표시기를 원했기 때문에 여기에 있습니다. 직접 할 수는 없습니다. 어쩌면 당신은 나를 위해 그것을 다시 쓸 수 있습니다. 고맙습니다.
Оглавление файлового архива Разработки на MQL4 Индикаторы Очень хорошую доработку индикатора i-Spread предложил пользователь pavik. Суть доработки в добавлении отображения минимальных значений спрэда за последние час, четыре часа и сутки. А также...
입력 정수 period_1 = 20; 입력 정수 period_2 = 100; ENUM_MA_METHOD 입력 ma_method = MODE_SMA; 입력 ENUM_APPLIED_PRICE 적용_가격 = PRICE_CLOSE;
이중 ExtMapBuffer1[]; 이중 ExtMapBuffer2[]; intEMHandle1=0; intEMHandle2=0; intEMHandle11=0; intEMHandle22=0; MqlParam 매개변수[]; // 인디케이터에 파라미터를 저장하기 위한 구조체 이중 ma1[],ma2[],ma3[],ma4[];//시간 버퍼
PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE); PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE); IndicatorSetString(INDICATOR_SHORTNAME,"2_2_MA"); //--- 정확도 설정 IndicatorSetInteger(INDICATOR_DIGITS,4); //--- ArrayResize(매개변수,4); params[0].유형 =TYPE_INT; params[0].integer_value=period_1; // 오프셋 params[1].유형 =TYPE_INT; params[1].integer_value=0; // 계산 방법: 단순 평균 params[2].유형 =TYPE_INT; params[2].integer_value=MODE_SMA; // 계산을 위한 가격 유형: 종가 params[3].유형 =TYPE_INT; params[3].integer_value=PRICE_CLOSE;
리턴(0); } int OnCalculate (const int Rates_total, // price[] 배열 크기; const int prev_calculated,// 사용 가능한 막대의 수 ;이전 호출에서; const int begin,// price[] 배열의 어느 인덱스에서 유효한 데이터가 시작되는지; const double &price[]) // 지표를 계산할 배열; { 정수 나; ArraySetAsSeries(ma1, true); ArraySetAsSeries(ma2, true); ArraySetAsSeries(ma3, true); ArraySetAsSeries(ma4, true);
Murray의 수준에 약간의 아름다움을 가져 왔습니다.
안녕하세요. 장인은 상관 지표를 MT5로 변환해야 합니다.
#속성 표시기_차트_창
#속성 표시기_버퍼 2
#property indicator_plots 2
#property indicator_color1 clrDeepSkyBlue
#property indicator_color2 clrDeepSkyBlue
#속성 표시기_차트_창
이중 UpBuffer[];
더블Dn버퍼[];
int OnInit()
{
SetIndexBuffer(0,UpBuffer);
SetIndexBuffer(1,DnBuffer);
PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE); PlotIndexSetInteger(0,PLOT_DRAW_TYPE,PLOT_LINE_WIDTH,3);PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE); PlotIndexSetInteger(1,PLOT_DRAW_TYPE,PLOT_LINE_WIDTH,3);PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE);
반환(0);
}
//+----------------------------------------------- --------------------+
//| 사용자 지정 표시기 반복 기능 |
//+----------------------------------------------- --------------------+
int OnCalculate(const int rate_total, const int prev_calculated, const datetime &time[],const double &open[],const double &high[],const double &low[],const double &close[],const long &tick_volume[], const long &tick_volume [], const int &spread[])
{int 나;
for(i=1000;i>0;i--)
{ 업버퍼[i]=1.428; DnBuffer[i]=1.41;
}
반환(0);
}
선이 그려지지 않는 이유는 무엇입니까?
다음과 같아야 합니다. 모든 것이 작동한다고 믿습니다.
이 지표를 다운로드하십시오. 컴파일시 228행에 에러가 나서 그림을 못그렸으니 양해 부탁드립니다. 일반적으로 나는 MT5에 던질 때 사용하는 표시기를 원했기 때문에 여기에 있습니다. 직접 할 수는 없습니다. 어쩌면 당신은 나를 위해 그것을 다시 쓸 수 있습니다. 고맙습니다.
도와주세요, 제발.
WATL을 다시 작성하려고 시도했지만 거의 성공했습니다. 곡선 LWMA 계산으로 인해 선이 잘못 그려집니다. 그리고 가장 중요한 것은 때때로 그러한 놀라움이 그래프에서 나타납니다.
WATL로 간주되는 점선(때로는 일대일).
또는 때때로 그래프를 회전하면 점이 다음 막대에 모두 복제됩니다.
도움을 주셔서 미리 감사드립니다 =)
누군가 MQL5 전환에서 이 지표를 본 적이 있습니까? http://www.kimiv.ru/index.php?option=com_remository&Itemid=13&func=fileinfo&id=67
여보세요,
빙빙 돌지 않아서 안 돼 그게 내가 원하던
짧은 것들은 다른 이동 버퍼를 호출하며 정지된 표시기와 다른 쌍에 대해 계산됩니다.
[암호]
#속성 표시기_분리_창
#속성 표시기_버퍼 6
#property indicator_plots 2
#속성 표시기_유형1 DRAW_COLOR_LINE
#속성 표시기_유형2 DRAW_COLOR_LINE
#property indicator_color1 clrBlue
#property indicator_color2 clrRed
#속성 표시기_스타일1 STYLE_SOLID
#속성 표시기_스타일2 STYLE_SOLID
입력 정수 period_1 = 20;
입력 정수 period_2 = 100;
ENUM_MA_METHOD 입력 ma_method = MODE_SMA;
입력 ENUM_APPLIED_PRICE 적용_가격 = PRICE_CLOSE;
이중 ExtMapBuffer1[];
이중 ExtMapBuffer2[];
intEMHandle1=0;
intEMHandle2=0;
intEMHandle11=0;
intEMHandle22=0;
MqlParam 매개변수[]; // 인디케이터에 파라미터를 저장하기 위한 구조체
이중 ma1[],ma2[],ma3[],ma4[];//시간 버퍼
int OnInit()
{
//--- 표시기 버퍼 매핑
SetIndexBuffer(0, ExtMapBuffer1, INDICATOR_DATA);
SetIndexBuffer(1, ExtMapBuffer2, INDICATOR_DATA);
SetIndexBuffer(2, ma1, INDICATOR_DATA);
SetIndexBuffer(3, ma2, INDICATOR_DATA);
SetIndexBuffer(4, ma3, INDICATOR_DATA);
SetIndexBuffer(5, ma4, INDICATOR_DATA);
PlotIndexSetInteger(0, PLOT_SHIFT, 0);
PlotIndexSetInteger(1, PLOT_SHIFT, 0);
PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_SOLID);
PlotIndexSetInteger(1,PLOT_LINE_STYLE,STYLE_SOLID);
//---
PlotIndexSetInteger(0,PLOT_LINE_COLOR,clrBlue);
PlotIndexSetInteger(1,PLOT_LINE_COLOR,clrRed);
PlotIndexSetInteger(0,PLOT_DRAW_TYPE,DRAW_LINE);
PlotIndexSetInteger(1,PLOT_DRAW_TYPE,DRAW_LINE);
IndicatorSetString(INDICATOR_SHORTNAME,"2_2_MA");
//--- 정확도 설정
IndicatorSetInteger(INDICATOR_DIGITS,4);
//---
ArrayResize(매개변수,4);
params[0].유형 =TYPE_INT;
params[0].integer_value=period_1;
// 오프셋
params[1].유형 =TYPE_INT;
params[1].integer_value=0;
// 계산 방법: 단순 평균
params[2].유형 =TYPE_INT;
params[2].integer_value=MODE_SMA;
// 계산을 위한 가격 유형: 종가
params[3].유형 =TYPE_INT;
params[3].integer_value=PRICE_CLOSE;
EMHandle1 = IndicatorCreate(_Symbol, 0, IND_MA, 4, 매개변수);
ArrayResize(매개변수,4);
params[0].유형 =TYPE_INT;
params[0].integer_value=period_2;
params[1].유형 =TYPE_INT;
params[1].integer_value=0;
params[2].유형 =TYPE_INT;
params[2].integer_value=MODE_SMA;
params[3].유형 =TYPE_INT;
params[3].integer_value=PRICE_CLOSE;
EMHandle2 = IndicatorCreate(_Symbol, 0, IND_MA, 4, 매개변수);
ArrayResize(매개변수,4);
params[0].유형 =TYPE_INT;
params[0].integer_value=period_1;
params[1].유형 =TYPE_INT;
params[1].integer_value=0;
params[2].유형 =TYPE_INT;
params[2].integer_value=MODE_SMA;
params[3].유형 =TYPE_INT;
params[3].integer_value=PRICE_CLOSE;
EMHandle11 = IndicatorCreate(_Symbol, 0, IND_MA, 4, 매개변수);
ArrayResize(매개변수,4);
params[0].유형 =TYPE_INT;
params[0].integer_value=period_2;
params[1].유형 =TYPE_INT;
params[1].integer_value=0;
params[2].유형 =TYPE_INT;
params[2].integer_value=MODE_SMA;
params[3].유형 =TYPE_INT;
params[3].integer_value=PRICE_CLOSE;
EMHandle22 = IndicatorCreate(_Symbol, 0, IND_MA, 4, 매개변수);
리턴(0);
}
int OnCalculate (const int Rates_total, // price[] 배열 크기;
const int prev_calculated,// 사용 가능한 막대의 수 ;이전 호출에서;
const int begin,// price[] 배열의 어느 인덱스에서 유효한 데이터가 시작되는지;
const double &price[]) // 지표를 계산할 배열;
{
정수 나;
ArraySetAsSeries(ma1, true);
ArraySetAsSeries(ma2, true);
ArraySetAsSeries(ma3, true);
ArraySetAsSeries(ma4, true);
if(CopyBuffer(EMHandle1, 0, 0, 1, ma1) < 0){Print("CopyBuffer ma1 오류=", GetLastError());}
if(CopyBuffer(EMHandle2, 0, 0, 1, ma2) < 0){Print("CopyBuffer ma2 오류=", GetLastError());}
if(CopyBuffer(EMHandle11, 0, 0, 1, ma3) < 0){Print("CopyBuffer ma3 오류=", GetLastError());}
if(CopyBuffer(EMHandle22, 0, 0, 1, ma4) < 0){Print("CopyBuffer ma4 오류=", GetLastError());}
정수 제한;
//if(prev_calculated<1)
//한계=period_1;
제한=prev_calculated-1;
for( i=0; i<한계; i++)
ExtMapBuffer1[0]=계산;
ExtMapBuffer2[0]=계산;
논평(
"\n======================",
"\n ma1[0] : ",DoubleToString(ma1[0],5),
"\n ma2[0] : ",DoubleToString(ma2[0],5),
"\n ma3[0] : ",DoubleToString(ma3[0],5),
"\n ma4[0] : ",DoubleToString(ma4[0],5),
"\n ExtMapBuffer1[0] : ",DoubleToString(ExtMapBuffer1[0],4),
"\n ExtMapBuffer2[0] : ",DoubleToString(ExtMapBuffer2[0],4)
);
반환(요금 합계);
}
무효 OnDeinit(const int 이유)
{
논평("");
}
[/암호]
i(막대용) 대신 0일 때 결과가 표시되고 막대(current= i)의 경우 두 번째 쌍에 대한 데이터를 찾을 수 없다는 메시지가 표시됩니다.
쌍의 차트가 열려 있고 시장 창에 기호가 있습니다. 어디서 / 무엇을 혼동하는지 이해하지 못합니까?
하나의 지표에 두 개의 다른 쌍이 있습니다. 그렇다면 내 실수는 어디에 있습니까?
0으로 설정하면 결과는 댓글로 보는데 해보지 않아서 선이 안 그려지네요.
설명: 한 쌍의 ma1 및 ma2 및 다른 쌍의 ma3 및 ma4.
감사해요.