[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 3. - 페이지 186

 
Vinin :


if (c % 2 == 0 ) //짝수


나는 어떤 것과도 평등하다는 것을 이중으로 확인하지 않을 것입니다.
 
이미 마감된 수익성 없는 주문에 대해 for 루프를 실행하는 방법을 알려주시겠습니까??? 아니면 누군가가 이미 기능을 가지고 있을지도 모릅니다. 손실이 나는 거래가 마감되면 많은 양을 곱해야 할까요?
 
tara :

나는 어떤 것과도 평등하다는 것을 이중으로 확인하지 않을 것입니다.


이전에 정수에 대해서만 작성한 것 같습니다. 아니면 글을 잘 못 읽는 건가요?

Vinin 2011년 9월 18일 03:14 편집 | 삭제
닉XXX :

까다로운 질문입니다.)

숫자가 짝수인지 홀수인지 프로그래밍 방식 으로 결정하는 방법은 무엇입니까?

예를 들어:

int, b, c;

a=2;

b=3;

c=a+b

c - 짝수 또는 홀수?



숫자가 정수이면 2로 나눈 나머지를 확인해야 합니다.

 if (c % 2 == 0 ) //четное

 

코드의 오류를 설명해주세요



화신
2
2011 년 9월 18일 11시 56분

안녕하세요!

너무 게으르지 않은 사람에게 코드를 보고 내 실수가 무엇인지 알려달라고 요청합니다. 컴파일할 때 많은 오류가 발생합니다. 이것은 나의 첫 번째 조언자입니다. 이제 막 이해하기 시작했습니다. 어드바이저의 아이디어는 다음과 같습니다. 월요일, 주어진 시간에 지난 주 종가에서 X 포인트 떨어진 거리에서 양방향으로 보류 주문을 넣습니다. 금요일 지정된 시간에 시장 주문을 마감하고 기존 보류 중인 주문을 삭제합니다. 모두.

 //+------------------------------------------------------------------+
//|                                                         Week.mq4 |
//|                                          Copyright © 2011, Qwuyt |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, Qwuyt"
#property link       ""

//--- input parameters
extern double     lot= 0.01 ;                                                 //размер лота 
extern int        tp= 200 ;                                                   //тейк профит
extern int        sl= 50 ;                                                     //стоплосс
extern int        move= 100 ;                                                 //движение цены 
extern int        hc= 22 ;                                                     //час закрытия 
extern int        ho= 4 ;                                                     //час закрытия
double BP;                                                                 //цена открытия бай
double SP;                                                                 //цена открытия селл
int Ticket;                                                                
int Tip;                                                                   //тип ордера
int Curday;                                                                 //день недели
bool Ans = false;                                                           //ответ сервера после закрытия ордера
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()                               
  {
   int Curday = DayOfWeek                                    
   double BP = iClose ( NULL , 10080 , 1 )+ NormalizeDouble (move* Point , Digits );     //      
   double SP = iClose ( NULL , 10080 , 1 )- NormalizeDouble (move* Point , Digits );
     if (ho >= Hour && Curday= 1 )                                             //4 утра понедельника - открытие бай
    {
     OrderSend ( Symbol (),OP_BUYSTOP,lot,BP, 3 ,sl,tp, NULL , 0 , 0 , Red )
    }
     if (ho >= Hour && Curday= 1 )                                             //4 утра понедельника - открытие селл
    {
     OrderSend ( Symbol (),OP_SELLSTOP,lot,SP, 3 ,sl,tp, NULL , 0 , 0 , Red )
    }
     while (true)                                                           //цикл закрытия орд.
     {
       if (Tip== 0 && hc >= Hour && Curday= 6 )                               // Открыт ордер Buy, 22 часа пятницы закрыть
        {                                                                 //
         RefreshRates ();                                                   // Обновление данных
         Ans= OrderClose (Ticket,lot,Bid, 3 );                                 // Закрытие Buy
         return ;                                                           // Выход из start()
        }
       if (Tip== 1 && hc >= Hour && Curday= 6 )                               // Открыт ордер Sell, 22 часа пятницы закрыть
        {                                                                 //

         RefreshRates ();                                                   // Обновление данных
         Ans= OrderClose (Ticket,lot,Bid, 3 );
         return ;                                                           // Выход из start()
        }
       if (Tip== 4 ||Tip== 5 && hc >= Hour && Curday= 6 )                               // Открыт ордер Buy, 22 часа пятницы закрыть
        {                                                                 //
         RefreshRates ();                                                   // Обновление данных
         Ans= OrderDelete (Ticket, CLR_NONE );                                 // Закрытие Buy
         return ;                                                           // Выход из start()
        }
       break ;                                                               // Выход из while
     }
     Tip = OrderType ();
return ();
  }
첨부 파일:
주_1.mq4 (4.52KB)



929
2011 년 9월 18일 12:00 수정 | 삭제

시작한다:

1) 준비하다; 각 문장의 끝에

2) Hour() 와 같은 함수를 적절하게 사용

 
Falmera :
이미 마감된 수익성 없는 주문에 대해 for 루프를 실행하는 방법을 알려주시겠습니까??? 아니면 누군가가 이미 기능을 가지고 있을지도 모릅니다. 손실이 나는 거래가 마감되면 많은 양을 곱해야 할까요?

잘 말해 plz
 
Falmera :

잘 말해 plz


"초보자를 위한 도움말"의 한 가지인 이 기능을 구현하려는 자신의 시도를 보여주세요.

또는 "마지막으로 마감된 주문 검색" 또는 이와 유사한 검색을 사용하십시오. 주제는 오랫동안 "구멍에 빨려들어갔습니다"

 
Falmera :

잘 말해 plz

눈사태 지점의 올빼미를 참조하십시오.
 

프로그래밍 언어를 배우고 있는데 프로그램에서 이해할 수 없는 동작이 발생했습니다. 교재를 바탕으로 어드바이저를 작성 했는데 조금 다른 동작 원리로 변경했습니다.

2 이동 평균을 기반으로 한 전문가 고문. 아이디어는 간단하고 이동 평균이 교차하고 주문이 닫히고 반대가 열립니다. 나는 고문을 썼고 잘 작동합니다. 물론 작은 마이너스이지만 아이디어에 따라. 전체 개그는 다음과 같습니다(굵게 강조 표시됨).

A=iMA(NULL,0,Period_MA_1,0 ,MODE_SMA, PRICE_CLOSE,1); // ㅏ

B=iMA(NULL,0,기간_MA_2,0, MODE_SMA ,PRICE_CLOSE,1); // B

C=iMA(NULL,0,Period_MA_1,0, MODE_SMA ,PRICE_CLOSE,2); // 씨

D=iMA(NULL,0,기간_MA_2,0, MODE_SMA ,PRICE_CLOSE,2); // 디

이동 평균을 계산하는 방법(더하기가 표시될 수 있음)을 변경하자마자 간단한 방법( MODE_SMA ) 대신 지수 함수( MODE_EMA ) 와 다른 하나( MODE_SMMA ), 소위 부드러운 방법, 모든 것이 즉시 잘못됩니다. 작동 원리가 재미있어지면(전략 테스터에서) 고문은 주어진 기간의 맨 처음에 주문을 열고 마지막에 닫습니다. 저것들. 매년 그는 기간이 시작될 때 하나의 단일 거래를 시작하고 마지막에 닫습니다. 결과적으로 상담원은 나에게 플러스를 보여주었지만 나는 그런 플러스가 필요하지 않습니다. 나 자신도 동전을 던지고 매수 또는 매도 주문을 열 수 있으며, 1년 후에 플러스 또는 마이너스가 될지 알 수 있습니다. 그런데 MODE_SMA 대신 MODE_LWMA ( 선형 가중 이동 평균)를 넣으면 프로그램이 제대로 작동합니다.

무슨 일인지 말해주세요? 결국 원리는 동일하며 이동 평균을 계산하는 방법이 약간 다를 뿐입니다.

전체 프로그램 코드는 첨부 파일에 있습니다.


그들은 여기에서 나에게 대답했지만 유능하지도 않고 요점도 아닙니다. 저는 4개의 이동 평균을 사용한다고 합니다. 이것은 사실이 아닙니다. 두 개의 이동 평균이 있지만 각 이동 평균에 대해 두 개의 막대에 대한 값이 사용됩니다(총 4개의 배열 호출 A, B, C, D): 1 및 2 . 또한 주문을 마감할 때 Total 주문의 수를 줄여야 한다고 가정했지만 Odertotal 기능을 사용하여 주문을 계산하고 주문을 마감하면 ordertotal 자체의 값이 변경되기 때문에 이것이 필요하지 않다고 썼습니다. 다음 반복에서. 그들은 또한 명령을 설명하기 위해 소위 마법의 숫자를 사용하는 것을 제안했는데, 나는 아직 교과서에서 이 부분에 도달하지 않았습니다. 반복합니다. 프로그램은 MODE_SMA 및 MODE_LWMA에서 작동하고 MODE_EMA 및 MODE_SMMA에서는 작동하지 않습니다. 그 이유를 누가 알겠습니까? 답을 적어주세요 plzzz.

 
Falmera :

잘 말해 plz
눈사태 주제에 뛰어들면 많은 조언자가 있습니다 ... 오른쪽 상단에서 포럼을 검색하거나 Google을 통해 검색하십시오.
 
neisseria :

프로그래밍 언어를 배우고 있는데 프로그램에서 이해할 수 없는 동작이 발생했습니다. 교과서를 바탕으로 어드바이저를 작성했는데 조금 다른 행동원칙으로 바꿨습니다.

2 이동 평균을 기반으로 한 전문가 고문. 아이디어는 간단하고 이동 평균이 교차하고 주문이 닫히고 반대가 열립니다. 나는 고문을 썼고 잘 작동합니다. 물론 작은 마이너스이지만 아이디어에 따라. 전체 개그는 다음과 같습니다(굵게 강조 표시됨).

A=iMA(NULL,0,Period_MA_1,0 ,MODE_SMA, PRICE_CLOSE,1); // ㅏ

B=iMA(NULL,0,기간_MA_2,0, MODE_SMA ,PRICE_CLOSE,1); // B

C=iMA(NULL,0,Period_MA_1,0, MODE_SMA ,PRICE_CLOSE,2); // 씨

D=iMA(NULL,0,기간_MA_2,0, MODE_SMA ,PRICE_CLOSE,2); // 디

이동 평균을 계산하는 방법(더하기가 표시될 수 있음)을 변경하자마자 간단한 방법( MODE_SMA ) 대신 지수 함수( MODE_EMA ) 와 다른 하나( MODE_SMMA )를 입력합니다. 부드러운 방법, 모든 것이 즉시 잘못됩니다. 작동 원리가 재미있어지면(전략 테스터에서) 고문은 주어진 기간의 맨 처음에 주문을 열고 마지막에 닫습니다. 저것들. 매년 그는 기간이 시작될 때 하나의 단일 거래를 열고 마지막에 닫습니다. 결과적으로 상담원은 저에게 플러스를 보여주었지만 그런 플러스는 필요하지 않습니다. 나 자신은 동전을 던지고 매수 또는 매도 주문을 열 수 있으며, 1년 후에 플러스 또는 마이너스가 될 것인지 확인할 수 있습니다. 그런데 MODE_SMA 대신 MODE_LWMA ( 선형 가중 이동 평균)를 넣으면 프로그램이 제대로 작동합니다.

무슨 일인지 말해주세요? 결국 원리는 동일하며 이동 평균을 계산하는 방법이 약간 다를 뿐입니다.

전체 프로그램 코드는 첨부 파일에 있습니다.


그들은 여기에서 나에게 대답했지만 유능하지도 않고 요점도 아닙니다. 의심되는 바에 따르면, 나는 4개의 이동 평균을 사용합니다. 이것은 사실이 아닙니다. 두 개의 이동 평균이 있지만 각 이동 평균에 대해 두 개의 막대에 대한 값이 사용됩니다(총 4개의 배열 호출 A, B, C, D): 1 및 2 . 또한 주문을 마감할 때 Total 주문의 수를 줄여야 한다고 가정했지만 Odertotal 기능을 사용하여 주문을 계산하고 주문을 마감하면 ordertotal 자체의 값이 변경되기 때문에 이것이 필요하지 않다고 썼습니다. 다음 반복에서. 그들은 또한 명령을 설명하기 위해 소위 마법의 숫자를 사용하는 것을 제안했는데, 나는 아직 교과서에서 이 부분에 도달하지 않았습니다. 반복합니다. 프로그램은 MODE_SMA 및 MODE_LWMA에서 작동하고 MODE_EMA 및 MODE_SMMA에서는 작동하지 않습니다. 이유를 아는 사람은 답을 적어주세요 plzzz.


조건을 다시 확인하겠습니다. 개가 거기 묻힐지도 몰라