묻다! - 페이지 82

 

Codersguru 도와주세요

코더스구루

제로 라인을 넘을 때 Bullspower 표시기에 대한 소리 경고를 작성하려고합니다. 저는 MQL에 대한 경험이 없지만 다른 여러 지표의 일부 코드를 함께 넣습니다. 코드를 컴파일할 때 오류가 없습니다. 표시기 경고가 작동하지 않지만 Bullbears가 0선을 넘을 때 이 경고음을 수정하거나 새 코드를 입력하는 데 도움을 주시겠습니까?

thx 미리 많이

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

//| |

//| |

//| |

//| |

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

#재산권 "forex-tsd"

#속성 링크 "https://www.forex-tsd.com"

#속성 표시기_분리_창

#속성 표시기_버퍼 2

#property indicator_color1 라임

#property indicator_color2 크림슨

#속성 표시기_레벨1 0

이중 ExtMapBuffer1[];

이중 ExtMapBuffer2[];

더블 발불[];

이중 밸브베어[];

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

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

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

정수 초기화()

{

표시 버퍼(3);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexDrawBegin(0,2);

SetIndexLabel(0,"ExtMapBuffer1");

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexStyle(1, DRAW_HISTOGRAM, STYLE_SOLID, 4);

SetIndexDrawBegin(1,2);

SetIndexLabel(1,"ExtMapBuffer2");

//---- 표시기

//----

리턴(0);

}

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

//| 고객 표시기 초기화 해제 기능 |

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

정수 초기화()

{

//---- TODO: 여기에 코드 추가

//----

리턴(0);

}

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

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

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

정수 시작()

{

int shift,counted_bars=IndicatorCounted();

더블 valbear[], valbull[];

//---- 가능한 오류 확인

if(counted_bars<0) return(-1);

//---- 마지막으로 계산된 막대가 다시 계산됩니다.

if(counted_bars>0) counted_bars--;

shift=바-1;

동안(시프트>=0)

{

valbull[shift]=iBullsPower(NULL, 0, 13,PRICE_CLOSE,0);

valbear[shift]=iBearsPower(NULL, 0, 13,PRICE_CLOSE,0);

if (valbull[shift]>0)

{

ExtMapBuffer1[시프트]=발불[시프트];

ExtMapBuffer2[시프트]=0;

}

또 다른

{

ExtMapBuffer2[시프트]=발불[시프트];

ExtMapBuffer1[시프트]=0;

}

옮기다--;//

}

//---- 경고 모듈

#define SIGNAL_BAR 1

//---- 마지막 막대 시간이 있는 정적 변수

//---- 및 마지막 경고 방향이 저장됩니다.

정적 정수 PrevSignal = 0, PrevTime = 0;

//---- 분석하고자 선택한 막대가 0 막대가 아닌 경우,

// 경고를 확인할 의미가 없습니다.

//---- 여러번. 새로운 막대가 형성되기 시작하지 않으면 종료하십시오.

if(SIGNAL_BAR > 0 && 시간[0] <= 이전 시간)

리턴(0);

//---- 이 막대가 선택되었음을 표시합니다.

이전 시간 = 시간[0];

if(이전 신호 <= 0)

{

if(발불[SIGNAL_BAR] > 0 )

{

이전 신호 = 1;

Alert("BullChannel_positiv(", Symbol(), ", ", Period(), ") - 구매!!!");

}

}

if(이전 신호 >= 0)

{

if(발불[SIGNAL_BAR] < 0 )

{

PrevSignal = -1;

Alert("BearChannel_negativ(", Symbol(), ", ", Period(), ") - SELL!!!");

}

}

//---- 경고 모듈 종료

//----

리턴(0);

}

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

 

기능을 사용하여 열린 주문과 보류 중인 주문 을 구별하는 방법은 무엇입니까?

기능을 사용하여 열린 주문과 보류 중인 주문을 구별하는 방법은 무엇입니까?

감사해요.

 
vntb:
기능을 사용하여 열린 주문과 보류 중인 주문을 구별하는 방법은 무엇입니까? 감사해요.

OrderType() 확인 :

OrderType() == OP_BUY //주문 구매(열림)

OrderType() == OP_SELL //주문 판매(열림)

OrderType() == OP_BUYLIMIT //구매 제한 주문(보류 중)

OrderType() == OP_SELLLIMIT //판매 제한 주문(보류 중)

OrderType() == OP_BUYSTOP //구매 중지 주문(보류 중)

OrderType() == OP_SELLSTOP //판매 중지 주문(보류 중)

 

EA의 iMAOnArray

안녕 여러분,

지표(예: CCI, Force, RSI)의 이동 평균 교차점을 기반으로 EMA를 수행하려고 합니다. 그러나 배열을 선언하고 iMAOnArray 함수 를 실행하여 변수를 만드는 방법을 이해할 수 없습니다.

예를 들어, 아래 코드에서 차트에 대한 RSI 데이터를 버퍼에 넣은 다음 데이터를 활용하여 거래를 트리거할 이동 평균을 생성하려고 합니다. 내가 무엇을 잘못하고 있지?

의견이나 제안에 감사드립니다.

가을

이중 RSI[];

ArrayResize(RSI, 막대);

ArraySetAsSeries(RSI, 참);

for(int i=막대; i>=0; i--)

{

RSI = (iRSI(NULL,0,RSIPeriod,RSIPrice,i));

}

이중 Green0 = iMAOnArray(RSI,0,GreenPeriod,0,GreenPrice,0);

 

여보세요

경고와 함께 단계 추진력 이 있는 사람이 있습니까?

좋은 지표가 될 것 같아요

감사해요

문안 인사!

 

레벨별 거래 마감

안녕하세요, 가격이 일정 수준에 도달했을 때 거래를 종료하는 방법을 알고 싶습니다. 예를 들어 MA 라인 위의 55포인트입니다. 나는 OrderSend의 TakeProfit 부분에 MA를 포함시키려고 했지만 테스터는 "invalid something" 오류 메시지와 함께 내 EA를 거부합니다. 고맙습니다.

 
Sendra:
안녕하세요, 가격이 일정 수준에 도달했을 때 거래를 종료하는 방법을 알고 싶습니다. 예를 들어 MA 라인 위의 55포인트입니다. 나는 OrderSend의 TakeProfit 부분에 MA를 포함시키려고 했지만 테스터는 "invalid something" 오류 메시지와 함께 내 EA를 거부합니다. 고맙습니다.

우선 이동 평균을 구하십시오.

이중 MA = iMA(...);

그런 다음 다음과 같이 TakeProfit을 계산합니다.

이중 TP = MA + (55*포인트); // 또는 TP = MA-(55*포인트); 매도의 경우.

 

효과가있다!!

고마워요, CodersGuru. 작동합니다. 그러나 그것은 또한 저를 생각하게 만듭니다. 만약 내가 고정적이지 않은 특정 수준으로 이익 실현을 할 수 있다면, 내 손절매로 똑같이 할 수 있습니다(trailingstop을 사용하지 않고).

그리고 나는 시도했다.

그것은 나쁜 결과와 함께 작동했습니다. 그래서, 나는 trailingstop과 관련이 있다고 생각합니다. 그 맞습니까? (참고로 저는 아직 trailingstop을 코딩하는 방법을 배우지 않았습니다.)

감사합니다.

 

내부 후행 정지

Sendra:
고마워요, CodersGuru. 작동합니다. 그러나 그것은 또한 저를 생각하게 만듭니다. 만약 내가 고정적이지 않은 특정 수준으로 이익실현을 할 수 있다면, 내 손절매로 똑같이 할 수 있습니다(trailingstop을 사용하지 않고).

그리고 나는 시도했다.

그것은 나쁜 결과와 함께 작동했습니다. 그래서, 나는 trailingstop과 관련이 있다고 생각합니다. 그 맞습니까? (참고로 저는 아직 trailingstop을 코딩하는 방법을 배우지 않았습니다.)

감사합니다.

나는 내부 후행 정지에 대해 다음과 같이 했습니다. (이것은 긴 주문의 예입니다) 작동하는 것 같습니다. 도움이 되었기를 바랍니다.

extern int Trailing_Stop=20;

정적 이중 Trailing_Long;

bool Read_Long_Open;

if (장기 진입 결정 삽입)

{

여기에서 Ordersend() 함수

Read_Long_Open=참;

}

if (Read_Long_Open==true)

{

if(주문 선택(T_1L, SELECT_BY_TICKET)==true)

{

Trailing_Long=OrderOpenPrice();

Print(" Trailing_Long =",Trailing_Long);

Read_Long_Open=거짓;

}

}

if (Read_Long_Open==false)

{

if (Trailing_Long < 입찰가)

{

Trailing_Long=입찰가;

Print("조정된 Trailing_Long =",Trailing_Long);

}

}

if (입찰가 <= Trailing_Long-Trailing_Stop*Point)

{

주문 닫기() 함수

Print("장기 주문 마감");

}

 

감사해요

안녕, 울프

귀하의 코드를 시도했지만 대신 더 많은 부정 결과를 얻었습니다. 이유는 묻지 마세요. 저도 답을 모릅니다. 참고로 저는 아직 코딩에서 뺑소니 단계에 있습니다. 하지만 어쨌든 고맙게도 당신의 코드는 나에게 충분한 결과와 함께 내 자신을 작성할 수 있는 충분한 영감을 주었습니다.

감사합니다.