네. 그러나 BULL4() 함수 에서 if 문이 올바른가요? 내 말은, 당신이 계산하는 그 촛불을 찾고 있습니까?
우드주 :
그리고 나는 나를 위해 좋은 프로그램을 썼습니다 :) 당신은 어떻습니까?
그것은 당신의 것이므로 나를 형성하는 것이 아니라 당신에게 좋을 것입니다.
일부 의견:
bool CheckForCloseBULL4()
{
int i;
for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)
if ( ! OrderSelect (i, SELECT_BY_POS, MODE_TRADES) ) continue ;
if ( OrderMagicNumber() == MAGICMA1 && OrderSymbol() == Symbol () && OrderType() == OP_BUY )
if (OrderOpenPrice()+ 8 *MyPips < Ask) return ( true );
elsereturn ( false ); // <-- the else here is wrong. Use {} if you are unsure what is processed where
}
int OpenOrders_BULL4( string symbol)
{
int buys= 0 ;
for ( int i= 0 ;i< OrdersTotal ();i++) // <-- do it like you do it in the other loops!
{
if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)== false ) break ; // <-- break? Why not using always the same code for the same thing?
if (OrderSymbol()== Symbol () && OrderMagicNumber()==MAGICMA1) // Look at the for loop you used in CheckForCloseBULL4().
{
if (OrderType()==OP_BUY) buys++; // <-- why this additional if? Simplify it to:
} // if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA1 && OrderType()==OP_BUY) buys++;
}
return (buys);
}
bool CheckForCloseBULL41()
{
int i;
for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)
if ( ! OrderSelect (i, SELECT_BY_POS, MODE_TRADES) ) continue ;
if ( OrderMagicNumber() == MAGICMA1 && OrderSymbol() == Symbol () && OrderType() == OP_BUY )
if (OrderOpenPrice()+ 8 *MyPips < Ask) return ( true );
elsereturn ( false ); // <-- the else is correct now
}
int OpenOrders_BULL4( string symbol)
{
int buys= 0 ;
int i;
for (i= OrdersTotal ()- 1 ;i>= 0 ;i--) // Loop is correct and use the same code
{
if ( ! OrderSelect (i, SELECT_BY_POS, MODE_TRADES) ) continue ;
if (OrderSymbol()== Symbol () && OrderMagicNumber()==MAGICMA1 && OrderType()==OP_BUY)buys++;
}
return (buys);
}
나는 두 번째 구매를 추가
여는 조건:
bool BULL42send()
{
int i;
for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)
if ( ! OrderSelect (i, SELECT_BY_POS, MODE_TRADES) ) continue ;
if ( OrderMagicNumber() == MAGICMA1 && OrderSymbol() == Symbol () && OrderType() == OP_BUY )
if (OrderOpenPrice()+ 8 *MyPips < Ask) return ( true );
elsereturn ( false );
}
BULL41과 동일한 코드를 열고 CheckForClose 및 닫기(핍만 다름)
시작 기능은 다음과 같습니다.
void start()
{
if (BULL4() && BULL41send() && OpenOrders_BULL4( Symbol ())== 0 )
{
OpenBULL41(); //do open buy position
}
if (BULL42send() && OpenOrders_BULL4( Symbol ())== 1 )
{
OpenBULL42(); //do open buy position
}
if (CheckForCloseBULL41()== true && OpenOrders_BULL4( Symbol ())== 1 ) CloseBULL4();
if (CheckForCloseBULL42()== true && OpenOrders_BULL4( Symbol ())== 2 ) CloseBULL4();
}
//+------------------------------------------------------------------+
void start()
{
bool SignalBULL41Executed; //<-- if defined inside the start function, the flags get reset with every tick.bool SignalBULL42Executed; // define it outside in global scope.if (Fun_New_Bar()== true )
{
SignalBULL41Executed= false ;
SignalBULL42Executed= false ;
}
if (BULL4() && BULL41send() && !SignalBULL41Executed && OpenOrders_BULL4( Symbol ())== 0 )
{
OpenBULL41(); //do open buy position //<-- As far as I remember, you defined this as bool. Do only set the flag, if the function returns true.
SignalBULL41Executed= true ; // change to: if(OpenBULL41())SignalBULL41Executed=true;
}
위의 수정 사항은 플래그에 대한 것입니다. 그러나 열린 질문은 그것이 필요합니까? 새 주문만 여는 경우 특정 수의 주문 이 이미 열려 있는 경우 필요하지 않을 수 있습니다. 이것이 내가 노란색으로 표시된 표현으로 의미한 것입니다.
if (BULL4() && BULL41send() && !SignalBULL41Executed && OpenOrders_BULL4( Symbol ())== 0 )
그러나 걱정하지 마십시오. 플래그와도 함께 작동하며 나중에 사용되지 않는 것으로 판명되면 제거할 수 있습니다.
질문 1. 이 기능에서 촛불에 MyPips를 사용할 수 있습니까? 부울 BULL4()
네. 그러나 BULL4() 함수 에서 if 문이 올바른가요? 내 말은, 당신이 계산하는 그 촛불을 찾고 있습니까?
그리고 나는 나를 위해 좋은 프로그램을 썼습니다 :) 당신은 어떻습니까?
그것은 당신의 것이므로 나를 형성하는 것이 아니라 당신에게 좋을 것입니다.
일부 의견:
나는 마지막 오류 를 수정합니다
나는 두 번째 구매를 추가
여는 조건:
BULL41과 동일한 코드를 열고 CheckForClose 및 닫기(핍만 다름)
시작 기능은 다음과 같습니다.
이제 플래그, 재설정 신호 및 변경 시작 기능이 필요합니다.
내 상상은 말한다 :
새로운 바:
시작은 그렇게 보입니다.
코드가 작동하지만 오류가 있을 수 있습니다.
ResetSignals()가 그리워 잘 작동하지 않습니다.
나는 마지막 오류를 수정합니다
...
...
...
코드가 작동하지만 일부 오류가 있을 수 있습니다.
CheckForCloseBULL41() 함수 에서 else는 잘못된 형식이기 때문에 말하지 않았습니다. 당신은 아무것도 변경하지 않았습니다. 미결 주문 중 하나 이상이 아래에 일치하는 경우 루프가 모든 주문을 통해 실행되지 않으므로 문제가 발생합니다.
이미 열려 있는 특정 수의 주문에 대해서만 새 주문을 열면 신호 플래그가 필요하지 않습니다. 이것은 또한 코드가 더 많은 주문을 여는 것을 방지합니다.
Fun_New_Bar() 함수가 올바르지 않습니다.
1. 다른 문제
이것이 정확하지 않으면 다시 검색하겠습니다.
2. 새 막대 문제
3. 리셋 신호 문제
내가 나쁜 점 2 와 3을 적었 다면 고칠 생각 이 없을 것이고 가능한 한 가장 큰 방향 을 물어볼 것입니다.
1. 다른 문제
결정된
2. 새 막대 문제
결정된
3. 리셋 신호 문제
위의 수정 사항은 플래그에 대한 것입니다. 그러나 열린 질문은 그것이 필요합니까? 새 주문만 여는 경우 특정 수의 주문 이 이미 열려 있는 경우 필요하지 않을 수 있습니다. 이것이 내가 노란색으로 표시된 표현으로 의미한 것입니다.그러나 걱정하지 마십시오. 플래그와도 함께 작동하며 나중에 사용되지 않는 것으로 판명되면 제거할 수 있습니다.
플래그 는 필수는 아니지만 언젠가 는 유용 할 수 있다고 생각 합니다 .
하나의 EA에 두 개의 EA가 있는 방법 은 무엇입니까?
EA BULL4 를 복사 하고 BULL6 idex 와 간격 핍 을 변경 했습니다.
복사 EA Bull4 + EA Bull6 too new EA ( 숫자 () 뒤 의 모든 것) start() 및 magicma2 함수 내에서 변경 하십시오...
내 EA 는 매우 잘 작동 하며 시나리오 가 서로 간섭하지 않습니다 . 나는 행복하다 .
나는 당신의 도움 에 감사 하고 싶었 습니다. 당신의 도움 과 특히 당신의 지원 이 없었다면 저는 이 글을 쓰지 않았을 것입니다.
주제는 내 생각에 끝입니다.
문안 인사
내 EA 는 매우 잘 작동 하며 시나리오 가 서로 간섭하지 않습니다 . 나는 행복하다 .
나는 당신의 도움 에 감사 하고 싶었 습니다. 당신의 도움 과 특히 당신의 지원 이 없었다면 저는 이 글을 쓰지 않았을 것입니다.
천만에요. 좋은 피드백 감사합니다.