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

 

그것은 가격을 위해 작동합니다. 그는 idicator의 최고와 최저를 찾고 싶어합니다.

럭스

 

여보세요,

당신은 이것을 시도할 수 있습니다:

....

int highest=0, lowest=0, bar=WindowBarsPerChart();

for(int shift=0;shift<bar;shift++)

{

double indie=iCustom(.........,shift);

if(highest<indie) highest=indie;

if(lowest==0) lowest=indie;

if(lowest>indie) lowest=indie;

}

.....

참고: 이 코드는 현재 열린 양초도 계산합니다. 닫힌 양초만 계산하려면 shift=1을 사용하세요.

도움이 되었기를 바랍니다,

아디

 
:: iBarShift는 해당 날짜/시간에 시작하는 막대 또는 해당 날짜의 종료 막대를 찾습니다:시간...(최고/저가를 찾기 위해 시작하려는 시간대 또는 차트에 따라 다름).

int iBarShift(문자열 기호, int timeframe, datetime 시간, bool exact=false)

다음...

:: iHighest 및 iLowest의 결과를 찾기 위해 해당 막대 위치를 사용합니다.

int iHighest( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)

int iLowest( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)

:: 결과 및 완료 , 여기에 루프를 사용하지 마십시오!

 

다시 그리기 표시기를 프로그래밍 방식으로 새로 고칩니다.

여보세요,

x분마다 다시 그리기 표시기를 새로 고치는 방법을 찾고 있습니다.

현재 새로 고칠 수 있는 유일한 방법은 차트의 지표를 클릭한 다음 "확인"을 클릭하는 것입니다. MQL4 코드로 자동화할 수 있습니까?

나는 codersguru의 사이트에서 무언가를 찾았습니다. 프로그래밍 방식으로 차트 새로 고침 | www.metatrader.info , 하지만 그것은 나를 위해 작동하지 않는 것 같습니다. 아니면 시도해보고 다른 결과를 얻은 사람이 있습니까(작업 중)?

고맙습니다

 

내 영어에 대해 죄송합니다.

카운트 횟수를 원합니다. 조건이 막대당 한 번만 참입니다. 컴퓨터는 막대당 여러 번 추가됩니다. 내가 뭘 잘못했어?

 
IngvarDagmar:
내 영어에 대해 죄송합니다. 카운트 횟수를 원합니다. 조건이 막대당 한 번만 참입니다. 컴퓨터는 막대당 여러 번 추가됩니다. 내가 뭘 잘못했어?

다음과 같은 기능 을 사용하십시오 ...

bool NewBar() {

static datetime LastTime = 0;

if (Time[0] != LastTime) {

LastTime = Time[0];

return (true);

} else

return (false);

}

[/php]

Then put an if statement round your main code, like...

[php]

if(NewBar() == true){

// do the main processing here

}

도움이 되기를 바랍니다.

럭스

 

잘했어, 럭스.

나는 이것을 찾았다:

각 막대를 한 번만 처리하십시오.

Automated 2008.01.15 18:54 새 막대의 첫 번째 눈금에서 코드를 실행할 수 있습니다(즉, 이전 막대가 닫힌 직후).

다음은 새 막대가 생성된 경우 TRUE를 반환하는 함수입니다.

// 이 함수는 막대의 맨 처음 틱에서 TRUE를 반환합니다. 즉, 이전 막대가 막 닫힌 후입니다.

bool NewBar()

{

if(이전BarTime<시간[0])

{

PreviousBarTime = 시간[0];

반환(참);

}

반환(거짓); // if - else 문이 실행되지 않은 경우

} EA 시작 부분에 datetime PreviousBarTime을 선언해야 합니다...

그런 다음 코드에서 사용할 수 있습니다.

if ( NewBar() )

{

...... 여기에서 막대가 닫힌 후 실행해야 하는 코드 ....

} 감사합니다

자동화된fx@gmail.com

-------------------------------------------------- -

나는 당신이 STATIC을 사용하는 것을 알아차렸습니다... 찾아보니... STATIC과 전역 변수를 사용하는 것의 장점은 무엇입니까?

 

다중 항목 ea

도와주세요. 다음 입력 매개변수를 사용하여 ea를 만드는 데 도움이 필요하거나 찾거나 싶습니다. 각각 번호가 없는 4개의 개별 거래 항목 . 제비, 손절매, 후행 정지, 손익분기점 및 이익 목표. 전문가 고문 버튼을 클릭하면 거래가 열립니다.

감사합니다

 

후행 중지 옵션에 대한 도움이 필요합니다.

MQL4 포럼에서 이 EA를 찾았습니다. 꽤 흥미로운 EA입니다.

누군가 내가 설정한 적중 이익 값 후에만 활성화되는 후행 중지를 설정할 수 있는 후행 중지 옵션을 추가하는 데 도움을 줄 수 있습니까?

마스터마인드2.mq4

파일:
 

안녕하세요 여러분..

내가 쓴 EA에 문제가 있습니다. 실제로 MACD 표시기를 기반으로 한 EA .. MACD가 'n'자 모양이 되면 매도를 열고 MACD가 'u'자 모양이 되면 EA가 열립니다. 구입하다..

문제는 EA가 게시물을 열지 않았다는 것입니다. 백테스트 를 수행한 후에도 이 EA에서 게시한 게시물이 없습니다. 누군가 코드에 문제가 있는 것을 찾도록 도와줄 수 있습니까?

여기 코드입니다..

extern double TakeProfit = 20;

extern double Lots = 0.1;

extern double StopLoss = 20;

extern double MagicNumber = 17384;

extern int FastEMA=12;

extern int SlowEMA=26;

extern int SignalSMA=9;

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

//| expert initialization function |

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

double MacdBuffer1[];

double MacdBuffer2[];

double MacdBuffer3[];

double MacdBuffer4[];

double MacdBuffer5[];

double MacdBuffer6[];

double MacdBuffer7[];

double MacdBuffer8[];

int init()

{

//----

//SetIndexBuffer(0, lag1_buffer);

//SetIndexBuffer(1, lag2_buffer);

//----

return(0);

}

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

//| expert deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| expert start function |

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

int start()

{

int limit;

int counted_bars=IndicatorCounted();

//---- last counted bar will be recounted

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---- macd counted in the 1-st buffer

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

MacdBuffer1=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

MacdBuffer2=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i-1)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i-1);

MacdBuffer3=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i+1)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i+1);

MacdBuffer4=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i-2)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i-2);

MacdBuffer5=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i+2)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i+2);

MacdBuffer6=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i-3)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i-3);

MacdBuffer7=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i+3)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i+3);

/*Alert( "MacdBuffer7 =",MacdBuffer7);

Alert( "MacdBuffer5 =",MacdBuffer5);

Alert( "MacdBuffer3 =",MacdBuffer3);

Alert( "MacdBuffer1 =",MacdBuffer1);

Alert( "MacdBuffer2 =",MacdBuffer2);

Alert( "MacdBuffer4 =",MacdBuffer4);

Alert( "MacdBuffer6 =",MacdBuffer6);*/

//----

int ticket_buy, ticket_sell, total;

total=OrdersTotal();

//MACD become 'u' shape

if (MacdBuffer7>MacdBuffer5&&MacdBuffer5>MacdBuffer3&&MacdBuffer3>MacdBuffer1

&&MacdBuffer1<MacdBuffer2&&MacdBuffer2<MacdBuffer4&&MacdBuffer4<MacdBuffer6)

{

if (total < 1) {

ticket_buy=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"scalp 1 min - buy",MagicNumber,0,Green);

if(ticket_buy>0)

{

if(OrderSelect(ticket_buy,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());

}

else Print("Error opening BUY order : ",GetLastError());

return(0);

} else {

}

}

//MACD become 'n' shape

if(MacdBuffer7<MacdBuffer5&&MacdBuffer5<MacdBuffer3&&MacdBuffer3<MacdBuffer1

&&MacdBuffer1>MacdBuffer2&&MacdBuffer2>MacdBuffer4&&MacdBuffer4>MacdBuffer6)

{

if (total < 1) {

ticket_sell=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"scalp 1 min - sell",MagicNumber,0,Red);

if(ticket_sell>0)

{

if(OrderSelect(ticket_sell,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Error opening SELL order : ",GetLastError());

return(0);

} else {

}

}

//----

return(0);

}

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

누군가가 문제를 해결하는 데 도움이되기를 바랍니다. 나는 프로그래밍 코드에 능숙하지 않습니다. 감사합니다.