[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 917

 
_SS_ :
함수를 만들고 호출하는 방법은 무엇입니까?
튜토리얼을 읽어보세요... :)
 

artemida70, S. Kovalev의 교과서에서 첫 번째 고문을 수집했습니다. 그것의 기준 기능이 손실로 작동하는 것으로 나타났습니다. 내 기준 기능을 작성했습니다. 오류를 확인한 다음 어드바이저를 컴파일했습니다. 받은 작업의 결과:

- 기준의 기능에 따라: O - 오류, 1 - 경고;

- 고문의 편집에 따라: O - 오류, O - 경고.

그러나 Strategy Tester의 작업은 잘 진행되지 않았습니다. int init, int start, int deinit 함수에 테스트 ALERT를 넣었습니다. 응답에서 터미널의 제어가 int init 함수로 전달되지만 제어가 int 시작 함수로 전달되지 않음을 알 수 있습니다. ALERT 응답이 없습니다. Expert Advisor가 언로드되면 int deinit 함수에서 응답이 있습니다.

그러한 상황에 대한 조언을 부탁드립니다. 경험 많은 전문가의 조언이 정말 필요합니다.

감사합니다

artmedia70 :
튜토리얼을 읽어보세요... :)
 
artmedia70 :
여기에 이상한 구조가 있습니다. 터미널 주문을 통해 정렬하는 표준 주기를 수행하고 있습니다. 0에서 OrdersTotal() -1까지. 그런 다음 루프에서 터미널에 주문이 완전히 없는지 확인합니다. 왜 주문 티켓을 확인하지 않습니까? 아니면 마법? 그리고 어떤 이유로 플래그 = 0입니다. 거짓이 아닌 이유는 무엇입니까? 그나저나 사장님이 신사분이시네요... 분해하시려는게 논리입니다... :)

힌트 감사합니다))) 여기 있습니다:... 0에서 OrdersTotal() -1까지... 그리고 테스터가 더 이상 주문을 계속하지 않는 이유가 있었습니다)))

그리고 이 계획에 따르면, 나는 다른 사람들의 교훈에서 이렇게 배웠기 때문에 그것을 하는 것입니다. 보다 합리적인 방법으로 더 자세히 설명하면 매우 감사하겠습니다.)))

 

요컨대, 나는 바닥에 도달했습니다. 아마도 한 달 동안이 mql4에서 나오지 않을 것입니다. 내 지붕이 이미 캠페인 또는 무언가에 가고 있습니까?

간단히 말해서 테스트는 완벽하게 통과했고 데모와 실생활에서는 작동하지 않습니다 !!!! 저도 1로트를 시도했지만 로그에 오류가 표시되지 않습니다.

일반적으로, 나는 퍼뜨리고, 무엇이 잘못되었는지 최소한 힌트를 줍니까? 전문가가 찻주전자를 도와주세요!!!

사람들, 어떤 이유로 내 고문이 배치되지 않습니까? 아니면 내가 보지 못하는 것입니까?
 
외부 이중 정지 손실 = 50.0;
외부 이중 TakeProfit=50.0;
외부 이중 로트=1;
외부 정수 합계;

정수 시작()
{
두 배 Price_1, Price_2, 최소, 최대;
새로 고침();
Price_1=입찰가;
Price_2=묻다;

최소=iLow(NULL,0,2);
최대=iHigh(NULL,0,2);
총계=주문총계();
if(총<1)
{

if(가격_1>최대)
OrderSend (Symbol(),OP_BUY,Lots,Ask,5,Bid-StopLoss*Point,Ask+TakeProfit*Point,"내 주문 번호",16384,0,Green);

if(가격_2<분)
OrderSend(Symbol(),OP_SELL,Lots,Bid,5,Ask+StopLoss*Point,Bid-TakeProfit*Point,"내 주문 번호",16384,0,Green);
}
}
리턴(0);
 
boris.45 :

artemida70, S. Kovalev의 교과서에서 첫 번째 고문을 수집했습니다. 그 안에있는 기준 기능이 손실로 작동하는 것으로 나타났습니다. 내 기준 기능을 작성했습니다. 오류를 확인한 다음 어드바이저를 컴파일했습니다. 받은 작업의 결과:

- 기준의 기능에 따라: O - 오류, 1 - 경고;

-어드바이저 컴파일의 경우: O - 오류, O - 경고.

그러나 Strategy Tester의 작업은 잘 진행되지 않았습니다. int init, int start, int deinit 함수에 테스트 ALERT를 넣었습니다. 응답에서 터미널의 제어가 int init 함수로 전달되지만 제어가 int 시작 함수로 전달되지 않음을 알 수 있습니다. ALERT 응답이 없습니다. Expert Advisor가 언로드되면 int deinit 함수에서 응답이 있습니다.

그러한 상황에 대한 조언을 부탁드립니다. 경험 많은 전문가의 조언이 정말 필요합니다.

감사합니다


나는 또한 당신이 거기에 무엇을 얻었는지보고 싶습니다 ... :)
나는 그것이 무엇을 의미하는지 이해하지 못합니다. SC의 경우 기준 기능이 손실됩니다. 결국, 여는 기준을 추적하는 경우 모든 기능은 올바르게 작동하거나 잘못 작동할 수 있습니다. 즉, 오류가 있음을 의미합니다. 그러나 전략 자체 - 수익성이 없거나 수익성이 있을 수 있습니다... 기준 기능은 전략에 의해 설정된 기준만을 모니터링하고 거래 기능 에 신호를 보냅니다.
 
ViktorF :

힌트 감사합니다))) 여기 있습니다:... 0에서 OrdersTotal() -1까지... 그리고 테스터가 더 이상 주문을 계속하지 않는 이유가 있었습니다)))

그리고 이 계획에 따르면, 나는 다른 사람들의 교훈에서 그렇게 배웠기 때문에 그것을 합니다. 보다 합리적인 방법으로 더 자세히 설명하면 매우 감사하겠습니다.)))

많은 방법이 있습니다. 그것은 모두 당신이 찾고자하는 것에 달려 있습니다.

어쨌든 루프에서 주문을 통해 정렬을 시작할 수 있습니다.

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

루프에서 더 나아가 찾고자 하는 것을 이미 정확히 확인하고 있습니다.

if (OrderSelect(i, SELECT_BY_POS) // 주문이 선택되면 (여기서는 MODE_TRADES 함수의 매개변수가 기본적으로 선택되어 있으므로 생략했습니다)

그런 다음 이미 필요한 주문 매개변수(예: 마술)를 확인합니다.

if (OrderMagicNumber()==Magic) // 주문에 지정된 마법이 있으면... 주문이 맞다는 뜻입니다...

음... 아니면 그의 유형...

if (OrderType()==OP_BUY || OrderType()==OP_SELL) // 주문 유형 이 매수 또는 매도인 경우...

등.

완전히 다른 방식으로 수행할 수 있지만... 모두 습관에 따라 달라집니다. 음, 코드 요구 사항에 따라...

 
gheka :

작동해야합니다. 웃는 미소?
 

여러분, 안녕하세요! Expert Advisor에는 이러한 코드가 있습니다(아래 참조). 내가 알기로 는 포지션을 여는 신호는 두 칠면조의 지표에서 가져옵니다. CCI와 같은 하나의 지표만 기준으로 주문이 열리도록 하려면 어떻게 해야 합니까? 정말 감사합니다.

 int getSignal() {
   int Momentum = checkMomentum();
   int CCI = checkCCI();
   if (Momentum != CCI) return ( 0 );
   return (Momentum);
}
int checkCCI() {
   double CCI = iCCI ( NULL , 0 , 60 , PRICE_TYPICAL , 1 );
   Print ( "CCI: " , CCI);
   if (CCI > 0.0 ) return ( 1 );
   if (CCI < 0.0 ) return (- 1 );
   return ( 0 );
}

int checkMomentum() {
   double Momentum = iMomentum ( NULL , 0 , 60 , PRICE_TYPICAL , 1 );
   Print ( "Momentum " , Momentum);
   if (Momentum > 100 && Momentum < 101 ) return ( 1 );
   if (Momentum < 100 && Momentum > 99 ) return (- 1 );
   return ( 0 );
}
 

도움, 조언자는 이익에 도달했을 때 모든 주문을 마감하지 않습니다.

 void CloseAllOrders()
{
   for ( int i = 0 ; i < OrdersTotal (); i++)
  {
     if ( OrderSelect (i, SELECT_BY_POS))
    {
       if ( OrdersTotal () > 1 && OrderSymbol() == Symbol () && AccountProfit() >= AccountBalance()*AllProfit/ 100 )
      {
         if ((OrderType()==OP_BUY || OrderType()==OP_BUYSTOP || OrderType()==OP_BUYLIMIT)) OrderClose(OrderTicket(), OrderLots(),Bid, 0 );
         if ((OrderType()==OP_SELL || OrderType()==OP_SELLSTOP || OrderType()==OP_SELLLIMIT)) OrderClose(OrderTicket(), OrderLots(),Ask, 0 );
         if (UseSound == true)
        {
         PlaySound (SuccesSound);
        }        
      }
    }
  }
}
사유: