코딩하는 방법? - 페이지 119

 

이것이 잘못된 것인지 알아 내려고 노력 중입니다.

(int i=qqea_alert_x_candles_ago; i>0; i--) {

// 정수 i = 1;

qqea_up = iCustom(NULL,0,"QQE 경고 v3",0,i);

qqea_down = iCustom(NULL,0,"QQE 경고 v3",1,i);

if (qqea_up < qqea_down) {

if (i == 1) qqeacross = True;

qqea_long = 참;

qqea_short = 거짓;

} else if (qqea_up > qqea_down) {

if (i == 1) qqeacross = True;

qqea_long = 거짓;

qqea_short = 참;

}

}

}

"qqea_alert_x_candles_ago" 막대까지 유효한 신호를 확인 해야 하지만 i==1은 한 번만 발생하는 (i == 1) ??

 
matrixebiz:
이것이 잘못된 것인지 알아 내려고 노력 중입니다.

(int i=qqea_alert_x_candles_ago; i>0; i--) {

// 정수 i = 1;

qqea_up = iCustom(NULL,0,"QQE 경고 v3",0,i);

qqea_down = iCustom(NULL,0,"QQE 경고 v3",1,i);

Print("qqea_up: ", qqea_up, "qqea_down: ", qqea_down);

if (qqea_up < qqea_down) {

if (i == 1) qqeacross = True;

qqea_long = 참;

qqea_short = 거짓;

} else if (qqea_up > qqea_down) {

if (i == 1) qqeacross = True;

qqea_long = 거짓;

qqea_short = 참;

}

}

}

"qqea_alert_x_candles_ago" 막대까지 유효한 신호를 확인해야 하지만 i==1은 한 번만 발생하는 (i == 1) ??

액면 그대로 코드는 괜찮아 보입니다. "qqea_alert_x_candles_ago" > 0이라고 가정합니다.

이것이 작동하지 않는 경우 문제는 iCustom과 관련하여 가능성이 더 높습니다.

기능 이 올바르게 작동하려면 실제 표시기의 모든 입력 요소에 대해 입력 요소를 전달해야 합니다. 이렇게 하지 않거나 잘못된 데이터 유형을 전달하면 icustom은 아무 것도 반환하지 않습니다.

위의 코드에 Print 문을 추가했습니다. 이것을 사용하여 iCustom에서 반환된 값에 실제로 어떤 것이 포함되어 있는지 확인합니다.

건배,

성공자

 

막대를 계산하는 코드에 필요한 도움

My EA에는 오픈 포지션의 손절매를 계산할 수 있는 다양한 옵션이 있습니다. 이러한 옵션 중 하나는 가격 막대의 마지막 "x" 수 중 낮은 값을 사용하는 것입니다.

현재 EA 내에서 매수 포지션에 대한 이 옵션의 손절매(SL)를 계산하는 데 사용되는 코드 라인은 다음과 같습니다.

SL=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,StopLossBars,0));

StopLossBars는 외부 입력 변수입니다.

내가 가진 문제는 StopLossBars 값이 포지션이 열린 이후로 계산된 모든 막대와 함께 이 조건을 넘어 stoploss에 대한 다른 조건 중 하나가 될 때까지 증가하기를 원한다는 것입니다. 다음과 같은 코드 줄을 추측합니다.

StopLossBars = StopLossBars + BarsCountedSincePositionOpened

트릭을 할 것입니다. 불행히도 내 코딩은 cut'n'paste로 제한되어 있으며 BarsCountedSincePositionOpened를 계산하거나 코딩하는 방법을 모르겠습니다.

누군가 나에게 그것을하는 방법을 알려주시겠습니까?

 
hiachiever:
액면 그대로 코드는 괜찮아 보입니다. "qqea_alert_x_candles_ago" > 0이라고 가정합니다.

이것이 작동하지 않는 경우 문제는 iCustom과 관련하여 가능성이 더 높습니다.

이 기능이 올바르게 작동하려면 실제 표시기의 모든 입력 요소에 대해 입력 요소를 전달해야 합니다. 이렇게 하지 않거나 잘못된 데이터 유형을 전달하면 icustom은 아무 것도 반환하지 않습니다.

위의 코드에 Print 문을 추가했습니다. 이것을 사용하여 iCustom에서 반환된 값에 실제로 어떤 것이 포함되어 있는지 확인합니다.

건배,

성공자

코드는 다른 EA에서 가져온 것이지만 루프가 "qqea_alert_x_candles_ago" > 1로 갈 때 이 문장은 "if (i == 1) qqeacross = True;"라고 생각했습니다. 이제 False가 될 것입니다. 맞습니까? i>qqea_alert_x_candles_ago까지 True로 유지되어야 하는 경우.

 

거들기

여러분 모두에게,

동료에게 이 코딩을 받았습니다. 그는 이것이 SMA 상승 또는 하락 항목을 신호하는 매우 좋은 지표가 되어야 한다고 말했습니다. 누군가가 아래의이 코딩으로 지표를 만드는 데 도움을 줄 수 있습니까?

/*[[

이름:= SMA 위아래로

별도의 창 := 아니오

첫 번째 색상:= 파란색

첫 번째 그리기 유형 := 선

두 번째 데이터 사용 := 예

두 번째 색상:= 레드

두 번째 그리기 유형 := 선

]]*/

입력: MAPeriod(10), Bandwide_UP(20), Bandwide_DOWN(20);

변수: shift(0), cnt(0), sum(0), loopbegin1(0), loopbegin2(0), first(True), prevbars(0);

변수: MA(0);

SetLoopCount(0);

// 초기 검사

MAPeriod < 1이면 종료합니다.

// 추가 막대 로딩 또는 전체 재로딩 확인

막대 1이면 먼저 = True;

prevbars = 막대;

// loopbegin1 및 loopbegin2는 계산된 막대의 계산을 방지하며 현재 제외

첫 번째 경우 시작

loopbegin1 = 막대-MAPeriod-1;

loopbegin1 < 0이면 종료합니다. // 셀 수 있는 막대가 충분하지 않음

loopbegin2 = 막대-MAPeriod-1;

loopbegin2 < 0이면 종료합니다. // 셀 수 있는 막대가 충분하지 않음

첫 번째 = 거짓; // 이 블록은 한 번만 평가됩니다.

끝;

// 수렴-발산

루프 시작1 = 루프 시작1+1; // 현재 막대도 다시 계산됩니다.

시프트 = loopbegin1 아래로 0 시작

MA = iMA(MAPeriod,MODE_SMA,shift);

SetIndexValue(shift,(MA+Bandwide_UP*point));

SetIndexValue2(shift,(MA-대역폭_DOWN*포인트));

루프 시작 1 = 루프 시작 1-1; // 이전 막대가 다시 계산되는 것을 방지합니다.

끝;

친애하는,

로제리오

 

코드에 필요한 도움

AC가 0보다 높거나 낮은 경우에만 주문을 여는 순간 다음 코드에 대한 도움이 필요합니다.

이중 AC1 = iAC(NULL, 0, 전류 + 0);

이중 AC2 = iAC(NULL, 0, 전류 + 1);

if ((AC1 < AC2)) 주문 = SIGNAL_CLOSEBUY;

 
matrixebiz:
코드는 다른 EA에서 가져온 것이지만 루프가 "qqea_alert_x_candles_ago" > 1로 갈 때 이 문장은 "if (i == 1) qqeacross = True;"라고 생각했습니다. 이제 False가 될 것입니다. 맞습니까? i>qqea_alert_x_candles_ago까지 True로 유지되어야 하는 경우.

아니오, 그것은 옳지 않습니다.

for 루프에서 6에서 시작하여 1로 감소합니다. 이것은 마지막 루프에서 for 루프가 "if (i == 1) qqeacross = True;"를 수행한다는 것을 의미합니다. 확인 . 최종 결과는 qqeacross가 발생한 경우 출력이 참이라는 것입니다.

이것이 나타날 수 있는 유일한 문제는 qqeacross가 이전 루프에서 true로 설정된 경우입니다. 이것을 극복하려면 qqeacross = false가 있어야 합니다. for 루프 전에. 이런 식으로 qqeacross = true이면 방금 완료된 루프에 의해 설정되었음을 확인할 수 있습니다.

건배,

성취자

 
Pussy Galore:
My EA에는 오픈 포지션의 손절매를 계산할 수 있는 다양한 옵션이 있습니다. 이러한 옵션 중 하나는 가격 막대의 마지막 "x" 수 중 낮은 값을 사용하는 것입니다.

현재 EA 내에서 매수 포지션에 대한 이 옵션의 손절매(SL)를 계산하는 데 사용되는 코드 라인은 다음과 같습니다.

SL=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,StopLossBars,0));

StopLossBars는 외부 입력 변수입니다.

내가 가진 문제는 StopLossBars 값이 포지션이 열린 이후로 계산된 모든 막대와 함께 이 조건을 넘어 stoploss에 대한 다른 조건 중 하나가 될 때까지 증가하기를 원한다는 것입니다. 다음과 같은 코드 줄을 추측합니다.

StopLossBars = StopLossBars + BarsCountedSincePositionOpened

트릭을 할 것입니다. 불행히도 내 코딩은 cut'n'paste로 제한되어 있으며 BarsCountedSincePositionOpened를 계산하거나 코딩하는 방법을 모르겠습니다.

누군가 나에게 그것을하는 방법을 알려주시겠습니까?

이를 수행하는 방법은 전역 범위(즉, 초기화 전에)에서 vriable을 만드는 것입니다.

int BarCount;

정수 초기화()

그런 다음 손절 코드에서 다음을 사용하십시오.

if (BarCount<막대)

{

SL=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,StopLossBars,0));

StopLossBars++;

BarCount=바;

}

이렇게 하면 각각의 새 막대에서 StopLossBars가 1씩 증가합니다.

코드에 추가되는 유일한 것은 새로운 거래가 열릴 때 'StopLossBars'를 원래 기본값으로 재설정하는 것입니다.

건배,

성공자

 
denis68:
AC가 0보다 높거나 낮은 경우에만 주문을 여는 순간 다음 코드에 대한 도움이 필요합니다.

이중 AC1 = iAC(NULL, 0, 전류 + 0);

이중 AC2 = iAC(NULL, 0, 전류 + 1);

if ((AC1 < AC2)) 주문 = SIGNAL_CLOSEBUY;

내가 한 것은 이 두 줄을 제거하여 표시기 코드에서 다른 두 버퍼를 열거나 표시하는 것이었습니다.

// SetIndexLabel(1,NULL);

// SetIndexLabel(2,NULL);

그런 다음 수정된 AC로 iCustom 호출 을 수행했습니다.

이중 ac1 = iCustom(NULL, 0, "AcceleratorMod", 1, 1);

이중 ac2 = iCustom(NULL, 0, "AcceleratorMod", 2, 1);

이중 ac11 = iCustom(NULL, 0, "AcceleratorMod", 1, 2);

이중 ac22 = iCustom(NULL, 0, "AcceleratorMod", 2, 2);

부울 구매 = ac2==0 && ac11==0; // 빨간색이 초록색으로 바뀝니다.

부울 액셀 = ac1==0 && ac22==0; // 녹색이 빨간색으로 바뀝니다.

도움이 되기를 바랍니다.

 

matrixebiz 이 두 줄을 삭제한다는 것은 무엇을 의미합니까? 어떻게 해야 하나요? 시도한 AC 표시기의 코드에 들어갈 수 없습니다.