코딩 도움말 - 페이지 246

 
macerina:
코드를 제공한 Mladen에게 감사합니다. ... 이전 논리에서 설명한 대로 이중 macd 비교 및 50 크로스오버가 있습니까? 미리 감사드립니다

마세리나

차이점은 아스펜 그래픽 버전에서 2차 진입 신호는 rsi와 해당 신호 라인 의 교차인 반면, 메타 트레이더 버전에서는 2차 신호가 50 라인의 rsi의 교차라는 것입니다. Macd 부분은 동일합니다(폐쇄 막대 신호를 가져와야 합니다. 이것이 아스펜 그래픽 버전에서 수행되는 방식입니다)

 

정보 감사합니다 mladen ... 50 라인 크로스 및 신호 라인 크로스를 선택하기 위해 동일한 표시기에서 옵션을 설정할 수 있습니까 ...

미리 감사드립니다

 
mladen:
sulaimoney 모든 절차는 괜찮습니다. 두 프로시저에 대한 호출이 차례로 실행될 때 모든 것이 정상임을 나타내는 간단한 표시기를 첨부합니다. 이 두 절차에 오류가 없으므로 나머지 코드를 확인하십시오.

안녕하세요 믈라덴

나는 코드를 통해 확인 했고 나는 대체했던 몇 가지 오류를 발견했습니다.

이제 다음 값을 사용하려고 합니다.

이중 lastorderprice = 0;

그리고

정수 bscount = 0;

예를 들어 void NewOrder()에서 호출할 수 있도록 전역 범위의 변수로 ea를 휘젓습니다.

// 온에브리틱

void LastBuySellOrder() // 마지막 주문(구매/판매)을 선택하기 위해 열려 있는 모든 주문을 반복합니다. OnEveryTick

{

이중 lastorderprice = 0;

날짜 시간 마지막 시간 = 0;

날짜/시간 닫기 시간 = 0;

int lastTicket = -1; // 열리지 않음.

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

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

if (OrderSymbol() == Symbol() && OrderMagicNumber() == OrderId

&&( 주문 유형() == OP_BUY || 주문 유형() == OP_SELL )

&& OrderOpenTime() >= lastTime && OrderCloseTime() == 닫기 시간

&& OrderTicket() > lastTicket )

{

마지막 시간 = OrderOpenTime();

lastorderprice = OrderOpenPrice();

닫기 시간 = 주문 닫기 시간();

lastTicket = OrderTicket();

}

반환(마지막 티켓);

}

또 다른

Print("OrderSelect() 오류 - ", ErrorDescription(GetLastError()));

}

무효 PendingStopOrderCount()

{

정수 bscount = 0;

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

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))

{

if (OrderSymbol() == Symbol())

if (OrderMagicNumber() == OrderId)

if (주문 유형() == OP_BUYSTOP )

{

bscount++;

}

}

또 다른

{

Print("OrderSend() 오류 - ", ErrorDescription(GetLastError()));

}

}

// OpBuy 또는 OpSell이 있는 경우

무효 NewOrder()

{

if (bscount==0)

{

구매 중지 보류();

}

}

 

안녕하세요

이 표시기는 리페인터입니까? 그렇다면 바는 언제 다시??

xps_v8_oscillator.ex4 xps_v8_oscillator.mq4

 
toldmikl:
안녕하세요

이 표시기는 리페인터입니까? 그렇다면 바는 언제 다시??

xps_v8_oscillator.ex4 xps_v8_oscillator.mq4
네. 시간 프레임에 따라 자동으로 기간이 설정되는 태양풍 표시기입니다.

1분 : 마침표 = 2880

5분 : 마침표 = 576

15분 : 기간 = 192

30분 : 기간 = 96

1시간 이상: 기간 = 48

 

알겠습니다. 하지만 오프라인 차트에서 사용합니다. M2 :S 정상이 아닙니다.

 
toldmikl:
알겠습니다. 하지만 오프라인 차트에서 사용합니다. M2 :S 정상이 아닙니다.

그것을 시도하고 당신 자신을 볼 것입니다 (자동 새로 고침과 같은 것을 사용하여 표시기가 모든 막대를 강제로 새로 고치거나 단순히 새 막대가 충분히 만들어지면 매개 변수 로 이동하여 아무 것도 변경하지 않고 확인을 클릭하십시오). 추세가 변화하는 기간에 주의를 기울이십시오.

태양풍 코드의 잘못된 점을 설명하고 누군가를 설득하는 것보다 나보다 낫습니다.

 

기간을 변경할 수 없습니다. 여기에서 소스 코드를 볼 수 있습니다.

#속성 표시기_분리_창

#속성 표시기_최소 0

#속성 표시기_최대 1

#속성 표시기_버퍼 3

#속성 표시기_색상2 C'72,49,255'

#속성 표시기_color3 C'255,49,72'

#속성 표시기_너비2 6

#속성 표시기_너비3 6

정수 기간;

외부 부울 알람=거짓;

이중 ExtBuffer0[];

이중 ExtBuffer1[];

이중 ExtBuffer2[];

이중 경고 표시줄;

이중 마지막;

정수 초기화() {

//-----------------------------------------

스위치( 마침표() )

{

사례 1: 마침표 = 2880;중단;

사례 5: 마침표 = 576; 중단;

사례 15: 마침표 = 192;중단;

사례 30: 마침표 = 96; 중단;

사례 60: 마침표 = 48; 중단;

사례 240: 마침표 = 48; 중단;

사례 1440: 마침표 = 48;중단;

사례 10080: 마침표 = 48;중단;

기본값: 마침표 = 48;중단;

}

//-----------------------------------------

SetIndexStyle(0,DRAW_NONE);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexStyle(2,DRAW_HISTOGRAM);

IndicatorDigits(숫자+1);

SetIndexBuffer(0,ExtBuffer0);

SetIndexBuffer(1,ExtBuffer1);

SetIndexBuffer(2,ExtBuffer2);

IndicatorShortName("");// X :-)");

SetIndexLabel(0, NULL);

SetIndexLabel(1, NULL);

SetIndexLabel(2, NULL);

리턴(0);

}

정수 초기화()

{

//----

ObjectDelete("XPS");

ObjectDelete("XPS2");

ObjectDelete("XPS3");

//----

리턴(0);

}

정수 시작() {

정수 제한;

int counted_bars=IndicatorCounted();

이중 이전, 현재, 이전;

이중 값=0, 값1=0, 값2=0, 물고기=0, 물고기1=0, 물고기2=0;

이중 가격;

이중 MinL=0;

이중 MaxH=0;

if(counted_bars>0) counted_bars--;

limit=막대-counted_bars;

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

{ 최대H = 높음;

MinL = 낮음[최저(NULL,0,MODE_LOW,기간,i)];

가격 = (고가+저가)/2;

값 = 0.33*2*((가격-최소값)/(최대값-최소값)-0.5) + 0.67*값1;

값=MathMin(MathMax(값,-0.999),0.999);

ExtBuffer0=0.5*MathLog((1+값)/(1-값))+0.5*Fish1;

값1=값;

Fish1=ExtBuffer0;

}

부울 업 = 참;

for(i=limit-2; i>=0; i--)

{

현재=ExtBuffer0;

이전=ExtBuffer0;

if (((현재0))||(현재<0)) up=거짓;

if (((현재>0)&&(이전0)) up= true;

if(!up) {

확장 버퍼2=1;

확장 버퍼1=0;

if (알람 && i==0 && 마지막 != 2 && ExtBuffer1 == 0 && Bars>alertBar)

{

Alert("OSC... ",Period()," ",Symbol())에 추세가 다운될 수 있습니다.

alertBar = 막대; 마지막 = 2;

}

}

또 다른 {

확장 버퍼1=1;

확장 버퍼2=0;

if (알람 && i==0 && 마지막 != 1 && ExtBuffer2 == 0 && Bars>alertBar)

{

Alert("OSC... ",Period()," ",Symbol())에 가능한 추세가 상승 중입니다.

alertBar = 막대;

마지막 = 1;

}

}

}//루프 종료

ObjectDelete("XPS");

ObjectCreate("XPS", OBJ_LABEL , 2, 0, 0);

ObjectSetText("XPS","! XPS v8", 28, "Arial Black", C'46,46,46');

ObjectSet("XPS", OBJPROP_CORNER, 2);

ObjectSet("XPS", OBJPROP_BACK, 0);

ObjectSet("XPS", OBJPROP_XDISTANCE, 6);

ObjectSet("XPS", OBJPROP_YDISTANCE, 8);

ObjectDelete("XPS2");

ObjectCreate("XPS2", OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS2","! XPS v8", 28, "Arial Black", Silver);

ObjectSet("XPS2", OBJPROP_CORNER, 2);

ObjectSet("XPS2", OBJPROP_BACK, 0);

ObjectSet("XPS2", OBJPROP_XDISTANCE, 4);

ObjectSet("XPS2", OBJPROP_YDISTANCE, 10);

ObjectDelete("XPS3");

ObjectCreate("XPS3", OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS3","보스처럼 거래", 9, "Arial Black", Silver);

ObjectSet("XPS3", OBJPROP_CORNER, 2);

ObjectSet("XPS3", OBJPROP_BACK, 0);

ObjectSet("XPS3", OBJPROP_XDISTANCE, 7);

ObjectSet("XPS3", OBJPROP_YDISTANCE, 3);

반환(0);

}

그래서?

 
toldmikl:
기간을 변경할 수 없습니다. 여기에서 소스 코드를 볼 수 있습니다.

#속성 표시기_분리_창

#속성 표시기_최소 0

#속성 표시기_최대 1

#속성 표시기_버퍼 3

#속성 표시기_색상2 C'72,49,255'

#속성 표시기_color3 C'255,49,72'

#속성 표시기_너비2 6

#속성 표시기_너비3 6

정수 기간;

외부 부울 알람=거짓;

이중 ExtBuffer0[];

이중 ExtBuffer1[];

이중 ExtBuffer2[];

이중 경고 표시줄;

이중 마지막;

정수 초기화() {

//-----------------------------------------

스위치( 마침표() )

{

사례 1: 마침표 = 2880;중단;

사례 5: 마침표 = 576; 중단;

사례 15: 마침표 = 192;중단;

사례 30: 마침표 = 96; 중단;

사례 60: 마침표 = 48; 중단;

사례 240: 마침표 = 48; 중단;

사례 1440: 마침표 = 48;중단;

사례 10080: 마침표 = 48;중단;

기본값: 마침표 = 48;중단;

}

//-----------------------------------------

SetIndexStyle(0,DRAW_NONE);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexStyle(2,DRAW_HISTOGRAM);

IndicatorDigits(숫자+1);

SetIndexBuffer(0,ExtBuffer0);

SetIndexBuffer(1,ExtBuffer1);

SetIndexBuffer(2,ExtBuffer2);

IndicatorShortName("");// X :-)");

SetIndexLabel(0, NULL);

SetIndexLabel(1, NULL);

SetIndexLabel(2, NULL);

리턴(0);

}

정수 초기화()

{

//----

ObjectDelete("XPS");

ObjectDelete("XPS2");

ObjectDelete("XPS3");

//----

리턴(0);

}

정수 시작() {

정수 제한;

int counted_bars=IndicatorCounted();

이중 이전, 현재, 이전;

이중 값=0, 값1=0, 값2=0, 물고기=0, 물고기1=0, 물고기2=0;

이중 가격;

이중 MinL=0;

이중 MaxH=0;

if(counted_bars>0) counted_bars--;

limit=막대-counted_bars;

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

{ 최대H = 높음;

MinL = 낮음[최저(NULL,0,MODE_LOW,기간,i)];

가격 = (고가+저가)/2;

값 = 0.33*2*((가격-최소값)/(최대값-최소값)-0.5) + 0.67*값1;

값=MathMin(MathMax(값,-0.999),0.999);

ExtBuffer0=0.5*MathLog((1+값)/(1-값))+0.5*Fish1;

값1=값;

Fish1=ExtBuffer0;

}

부울 업 = 참;

for(i=limit-2; i>=0; i--)

{

현재=ExtBuffer0;

이전=ExtBuffer0;

if (((현재0))||(현재<0)) up=거짓;

if (((현재>0)&&(이전0)) up= true;

if(!up) {

확장 버퍼2=1;

확장 버퍼1=0;

if (알람 && i==0 && 마지막 != 2 && ExtBuffer1 == 0 && Bars>alertBar)

{

Alert("OSC... ",Period()," ",Symbol())에 추세가 다운될 수 있습니다.

alertBar = 막대; 마지막 = 2;

}

}

또 다른 {

확장 버퍼1=1;

확장 버퍼2=0;

if (알람 && i==0 && 마지막 != 1 && ExtBuffer2 == 0 && Bars>alertBar)

{

Alert("OSC... ",Period()," ",Symbol())에 가능한 추세가 상승 중입니다.

alertBar = 막대;

마지막 = 1;

}

}

}//루프 종료

ObjectDelete("XPS");

ObjectCreate("XPS", OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS","! XPS v8", 28, "Arial Black", C'46,46,46');

ObjectSet("XPS", OBJPROP_CORNER, 2);

ObjectSet("XPS", OBJPROP_BACK, 0);

ObjectSet("XPS", OBJPROP_XDISTANCE, 6);

ObjectSet("XPS", OBJPROP_YDISTANCE, 8);

ObjectDelete("XPS2");

ObjectCreate("XPS2", OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS2","! XPS v8", 28, "Arial Black", Silver);

ObjectSet("XPS2", OBJPROP_CORNER, 2);

ObjectSet("XPS2", OBJPROP_BACK, 0);

ObjectSet("XPS2", OBJPROP_XDISTANCE, 4);

ObjectSet("XPS2", OBJPROP_YDISTANCE, 10);

ObjectDelete("XPS3");

ObjectCreate("XPS3", OBJ_LABEL, 2, 0, 0);

ObjectSetText("XPS3","보스처럼 거래", 9, "Arial Black", Silver);

ObjectSet("XPS3", OBJPROP_CORNER, 2);

ObjectSet("XPS3", OBJPROP_BACK, 0);

ObjectSet("XPS3", OBJPROP_XDISTANCE, 7);

ObjectSet("XPS3", OBJPROP_YDISTANCE, 3);

리턴(0);

}

그래서?

표준 시간 프레임이 아닌 모든 시간 프레임에 대해 기간 48을 적용합니다(예: "2분" 오프라인 차트).

계산 기간을 변경할 수 있는 태양풍 버전은 다음 스레드를 참조하십시오. https://www.mql5.com/en/forum/179650

 

전문가에게 인사드립니다. 이 스크립트를 편집하고 주문, 로트 크기, 구매/판매만 남겨주세요. 나는 이미 이익/손절매를 자동으로 배치하여 해당 인디와 충돌하는 EA를 소유하고 있습니다 .

이 스크립트는 자동으로 MENU에서 지정한 수량만큼의 시장가 주문을 한 번에 열 수 있지만 현재는 5개의 주문을 입력해도 하나의 주문만 열었습니다. 이 오류를 수정하고 DELETE가 SCRIPT에서 이익/정지 손실을 완전히 취하도록 도와주세요.

축복합니다