코딩 도움말 - 페이지 248

 

안녕하세요 친구. Thinkorswim을 위한 훌륭한 지표 Dynamic_Momentum_Index입니다. 메타 트레이더 4에 대해 다시 작성할 있습니까?. 아니면 누군가가 MT4에 대한 그러한 지표를 가지고 있습니까?

더 낮은 선언;입력 가격 = 닫기;입력 stdevLength = 5;입력 avgOfStdevLength = 10;입력 DYMILength = 30;입력 DYMILengthLowerLimit = 3;입력 DYMILengthUpperLimit = 30;assert(DYMILengthLowerLimit > 0, "'dymi 길이 하한 : 양수여야 함' " + DYMILengthLowerLimit);assert(DYMILengthLowerLimit와 DYMILengthUpperLimit 사이의 DYMILength, "'dymi 길이'는 하한과 상한 사이여야 합니다. " + DYMILength);def std = stdev(price, stdevLength);def ratio = std / Average(std, avgOfStdevLength);def dynamicLength = Floor(DYMILength / ratio);def limitedLength = DYMILengthLowerLimit와 DYMILengthUpperLimit 사이의 dynamicLength이면 dynamicLength else 0;def sf = 2 / (limitedLength + 1);def bn = Max(barNumber(), 0); # ema multiplierdef에 대한 정밀도 10^-5 expIndex = if limitedLength == 0 then 1 else max(1, bn - ceil(-5 / lg(1 - sf)));def fromIndex = if isNan(expIndex) then 1 else expIndex;def chg = 가격 - 가격[1];def absChg = AbsValue(chg);def netChgAvg = fold indexN = fromIndex to bn + 1 with accuN do sf * (if isnan(getValue(chg, bn - indexN)) then 0 else getValue(chg, bn - indexN)) + (1 - sf) * accuN;def totChgAvg = fold indexT = fromIndex to bn + 1 with accuT do sf * (if isnan(getValue(absChg, bn - indexT)) then 0 else getValue(absChg, bn - indexT)) + (1 - sf) * accuT;def RSI = if totChgAvg != 0 및limitedLength != 0 다음 50 * (netChgAvg / totChgAvg + 1) else RSI[1];plot DYMI = RSI;과매도를 플롯 = 90;과매도를 플롯 = 10;DYMI.DefineColor("과매도", GetColor(5)); DYMI.DefineColor("Normal", GetColor(7));DYMI.DefineColor("OverSold", GetColor(1));DYMI.AssignValueColor(RSI > 과매수인 경우 DYMI.Color("과매수") else if RSI = OverBought , "과매수", Alert.BAR, Sound.ring);경고(DYMI=과매수 후 고가*72 else double.nan;DotDn.setStyle(curve.POINTS);DotDn.setPaintingStrategy(paintingStrategy.arROW_DOWN);DotDn.setLineWeight( 3);DotDn.setDefaultColor(color.wHITE);plot DotUp = if DYMI<=OverSold then low*-2 else double.nan;Dotup.setStyle(curve.POINTS);Dotup. setPaintingStrategy(paintingStrategy.arROW_UP);Dotup.setLineWeight(3);Dotup.setDefaultColor(color.wHITE);alert(Dotup, "Scalper 매수 신호", Alert.BAR, Sound.ring);alert(DotDn, "Scalper 매수 신호 ", Alert.BAR, Sound.ring);

파일:
image_4.jpg  392 kb
 
olvus:
안녕하세요 친구. Thinkorswim을 위한 훌륭한 지표 Dynamic_Momentum_Index입니다. 메타트레이더 4용으로 다시 쓸 있나요?. 아니면 누군가가 MT4에 대한 그러한 지표를 가지고 있습니까?

더 낮은 선언;입력 가격 = 닫기;입력 stdevLength = 5;입력 avgOfStdevLength = 10;입력 DYMILength = 30;입력 DYMILengthLowerLimit = 3;입력 DYMILengthUpperLimit = 30;assert(DYMILengthLowerLimit > 0, "'dymi 길이 하한'은 양수여야 합니다. " + DYMILengthLowerLimit);assert(DYMILengthLowerLimit와 DYMILengthUpperLimit 사이의 DYMILength, "'dymi 길이'는 하한과 상한 사이여야 합니다. " + DYMILength);def std = stdev(price, stdevLength);def ratio = std / Average(std, avgOfStdevLength);def dynamicLength = Floor(DYMILength / ratio);def limitedLength = DYMILengthLowerLimit와 DYMILengthUpperLimit 사이의 dynamicLength이면 dynamicLength else 0;def sf = 2 / (limitedLength + 1);def bn = Max(barNumber(), 0); # ema multiplierdef에 대한 정밀도 10^-5 expIndex = if limitedLength == 0 then 1 else max(1, bn - ceil(-5 / lg(1 - sf)));def fromIndex = if isNan(expIndex) then 1 else expIndex;def chg = 가격 - 가격[1];def absChg = AbsValue(chg);def netChgAvg = fold indexN = fromIndex에서 b로 n + 1 with accuN do sf * (if isnan(getValue(chg, bn - indexN)) then 0 else getValue(chg, bn - indexN)) + (1 - sf) * accuN;def totChgAvg = fold indexT = fromIndex to bn + 1 with accuT do sf * (if isnan(getValue(absChg, bn - indexT)) then 0 else getValue(absChg, bn - indexT)) + (1 - sf) * accuT;def RSI = if totChgAvg != 0 및limitedLength != 0 다음 50 * (netChgAvg / totChgAvg + 1) else RSI[1];plot DYMI = RSI;과매도를 플롯 = 90;과매도를 플롯 = 10;DYMI.DefineColor("과매도", GetColor(5)); DYMI.DefineColor("Normal", GetColor(7));DYMI.DefineColor("OverSold", GetColor(1));DYMI.AssignValueColor(RSI > 과매수인 경우 DYMI.Color("과매수") else if RSI = OverBought , "과매수", Alert.BAR, Sound.ring);경고(DYMI=과매수 후 고가*72 else double.nan;DotDn.setStyle(curve.POINTS);DotDn.setPaintingStrategy(paintingStrategy.arROW_DOWN);DotDn.setLineWeight( 3);DotDn.setDefaultColor(color.wHITE);plot DotUp = if DYMI<=OverSold then low*-2 else double.nan;Dotup.setStyle(curve.POINTS);Dotup.s etPaintingStrategy(paintingStrategy.arROW_UP);Dotup.setLineWeight(3);Dotup.setDefaultColor(color.wHITE);alert(Dotup, "Scalper 매수 신호", Alert.BAR, Sound.ring);alert(DotDn, "Scalper 매수 신호 ", Alert.BAR, Sound.ring);

올버스,

이 게시물을 참조하십시오: https://www.mql5.com/en/forum/172919/page4 . 아마 그게 도움이 될거야

 

안녕하세요 mladen, 이 부탁을 드리고 싶습니다. MT4용으로 이 프로그램을 번역할 가능성이 있습니까?

암튼 감사합니다..

이것은 다른 언어 로 된 프로그램입니다. // var: domanda(0), offerta(0), var1(0), var2(0), indzona1;

// var1= ((H/C[1])-1)*V;

// var2= ((L/C[1]-1)*V*(-1);

// 도만다= MOV(var1,450,S);

// 제안= MOV(var2,450,S);

// indzona1= CreateWiewport(100);

// PlotChart(domanda, indzona1, 녹색, 솔리드, 1);

// PlotChart(offerta, indzona1, red, solid, 1); 이것은 MT4 언어에 대한 작업이지만 최신 업데이트 이후에는 더 이상 작동하지 않습니다.

#속성 표시기_분리_창

#속성 표시기_버퍼 2

#property indicator_color1 녹색

#property indicator_color2 빨간색

#속성 표시기_너비1 1

#속성 표시기_너비2 1

extern int periodo=128;

더블 도만다[];

이중 제안[];

//+----------------------------------------------- -------------------+

//| 커스텀 인디케이터 초기화 기능 |

//+----------------------------------------------- -------------------+

정수 초기화()

{

IndicatorDigits(6);

표시 버퍼(2);

SetIndexBuffer(0,DOMANDA);

SetIndexBuffer(1,OFFERTA);

리턴(0);

}

//+----------------------------------------------- -------------------+

//| 커스텀 인디케이터 초기화 해제 기능 |

//+----------------------------------------------- -------------------+

정수 초기화()

{

//----

//----

리턴(0);

}

//+----------------------------------------------- -------------------+

//| 사용자 지정 표시기 반복 기능 |

//+----------------------------------------------- -------------------+

정수 시작()

{

int counted_bars=IndicatorCounted();

int limit = 막대 - counted_bars;

이중 var_dom[10000];

이중 var_off[10000];

ArraySetAsSeries(var_dom,true);

ArraySetAsSeries(var_off,true);

for(int i=0; i<limit; i++)

{

var_dom = ((고가/종가)-1)*볼륨;

var_off = ((낮음/종가)-1)*볼륨 * (-1);

DOMANDA = iMAOnArray(var_dom,0,periodo,0,MODE_SMA,i);

제안 = iMAOnArray(var_off,0,periodo,0,MODE_SMA,i);

}

리턴(0);

} //+---------------------------------------------- --------------------+

 
Stephan73:
안녕하세요 mladen, 이 부탁을 드리고 싶습니다. MT4용으로 이 프로그램을 번역할 가능성이 있습니까?

암튼 감사합니다..

이것은 다른 언어 로 된 프로그램입니다. // var: domanda(0), offerta(0), var1(0), var2(0), indzona1;

// var1= ((H/C[1])-1)*V;

// var2= ((L/C[1]-1)*V*(-1);

// 도만다= MOV(var1,450,S);

// 제안= MOV(var2,450,S);

// indzona1= CreateWiewport(100);

// PlotChart(domanda, indzona1, 녹색, 솔리드, 1);

// PlotChart(offerta, indzona1, red, solid, 1); 이것은 MT4 언어에 대한 작업이지만 최신 업데이트 이후에는 더 이상 작동하지 않습니다.

#속성 표시기_분리_창

#속성 표시기_버퍼 2

#property indicator_color1 녹색

#property indicator_color2 빨간색

#속성 표시기_너비1 1

#속성 표시기_너비2 1

extern int periodo=128;

더블 도만다[];

이중 제안[];

//+----------------------------------------------- -------------------+

//| 커스텀 인디케이터 초기화 기능 |

//+----------------------------------------------- -------------------+

정수 초기화()

{

IndicatorDigits(6);

표시기버퍼(2);

SetIndexBuffer(0,DOMANDA);

SetIndexBuffer(1,OFFERTA);

리턴(0);

}

//+----------------------------------------------- -------------------+

//| 커스텀 인디케이터 초기화 해제 기능 |

//+----------------------------------------------- -------------------+

정수 초기화()

{

//----

//----

리턴(0);

}

//+----------------------------------------------- -------------------+

//| 사용자 지정 표시기 반복 기능 |

//+----------------------------------------------- -------------------+

정수 시작()

{

int counted_bars=IndicatorCounted();

int limit = 막대 - counted_bars;

이중 var_dom[10000];

이중 var_off[10000];

ArraySetAsSeries(var_dom,true);

ArraySetAsSeries(var_off,true);

for(int i=0; i<limit; i++)

{

var_dom = ((고가/종가)-1)*볼륨;

var_off = ((낮음/종가)-1)*볼륨 * (-1);

DOMANDA = iMAOnArray(var_dom,0,periodo,0,MODE_SMA,i);

제안 = iMAOnArray(var_off,0,periodo,0,MODE_SMA,i);

}

리턴(0);

} //+---------------------------------------------- --------------------+

스테판

여기 있습니다:

파일:
_stephan.mq4  2 kb
stephan.gif  61 kb
 
mladen:
스테판 여기 있습니다:

네, 완벽합니다!!!!

정말 감사합니다!!!

 

씨. mladen, thinkorswim 지표를 메타트레이더 4 지표(포스트 2474)로 다시 쓸 수 있습니까?

 

안녕하세요 여러분 ,

모든 시장 주문을 반복하고 lastTicket()을 사용하여 마지막 주문을 선택하는 함수 가 있다고 가정해 보겠습니다. 그런 다음 ot = orderopentime() 을 사용합니다. 프로그램의 다른 기능에서 ot 값을 사용할 수 있도록 ot 값을 얻는 방법은 무엇입니까? 예를 들어 모든 함수를 통해 내부 루프에서 checko()를 호출하고 싶지 않습니다.

무효 체크()

{

if (ot>presetdatetime)

{

닫기 주문();

}

}

 
hermes:
안녕하세요 여러분 ,

모든 시장 주문을 반복하고 lastTicket()을 사용하여 마지막 주문을 선택하는 함수가 있다고 가정해 보겠습니다. 그런 다음 ot = orderopentime() 을 사용합니다. 프로그램의 다른 기능에서 ot 값을 사용할 수 있도록 ot 값을 얻는 방법은 무엇입니까? 예를 들어 모든 함수를 통해 내부 루프에서 checko()를 호출하고 싶지 않습니다.

무효 체크()

{

if (ot>presetdatetime)

{

닫기 주문();

}

}

헤르메스

질문: 마지막 주문 티켓 이란 가장 큰 것(일반적으로 가장 최근에 주문한 것) 또는 가장 작은 것(일반적으로 가장 오래된 것)을 의미합니까?

 
mladen:
헤르메스 질문: 라스트 오더 티켓이란 가장 큰 것(보통 가장 최근에 주문한 것) 또는 가장 작은 것(일반적으로 가장 오래된 것)을 의미합니까?

감사합니다 Mladen, 나는 가장 최신 주문인 가장 큰 것을 의미합니다.

 
hermes:
감사합니다 Mladen, 나는 가장 최신 주문인 가장 큰 것을 의미합니다.

그런 다음 다음과 같은 기능 을 사용할 수 있습니다.

void deleteGreatestTicketOrder(datetime timeLimit)

{

int largestTicketNo = -1;

for (int i=OrdersTotal()-1; i>=0; i--)

{

if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;

largestTicketNo = MathMax(largestTicketNo,OrderTicket());

}

//

//

//

//

//

if (largestTicketNo>-1 )

{

if (OrderSelect(largestTicketNo,SELECT_BY_TICKET,MODE_TRADES))

if (OrderOpenTime()>timeLimit)

OrderDelete(largestTicketNo);

}

}

추신: 기호나 최종 매직 넘버 간에 차이를 만들지 않습니다. 그것들도 확인해야 하는 경우 위의 기능에 몇 가지 추가 코드를 추가해야 합니다.