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

 
xruss >> :

내 코드의 일부를 나중에 게시할 예정이지만 플래그가 있는 것이 더 시원할 것 같습니다. mql4를 통해 등록하는 방법은 무엇입니까?

https://book.mql4.com/en/variables/arrays

이 섹션의 끝에서 플래그를 사용하는 원리는 새로운 막대가 형성된다는 사실의 예를 사용하여 매우 잘 설명되어 있습니다. 유추하여 bool 유형의 두 변수를 생성합니다. 이는 특정 유형의 거래 허용 가능성을 나타냅니다(예: Buy_Allowed 및 Sell_Allowed). 기본적으로 이러한 변수는 true로 설정됩니다. 매수 신호가 도착하면 성공적인 포지션 개설 시 Buy_Allowed=false로 설정하고 OrderSend() 전에 Buy_Allowed==true인 경우에만 매수 거래에 대한 실행 조건을 추가합니다. 반환 신호가 도착하면 Buy_Allowed=true 플래그를 재설정합니다. Sell 거래에 대한 동일한 계획이지만 Sell_Allowed 플래그가 있습니다.

 
Everlost >> :

https://book.mql4.com/en/variables/arrays

이 섹션의 끝에서 플래그를 사용하는 원리는 새로운 막대가 형성된다는 사실의 예를 사용하여 매우 잘 설명되어 있습니다. 유추하여 bool 유형의 두 변수를 생성합니다. 이는 특정 유형의 거래 허용 가능성을 나타냅니다(예: Buy_Allowed 및 Sell_Allowed). 기본적으로 이러한 변수는 true로 설정됩니다. 매수 신호가 도착하면 성공적인 포지션 개설 시 Buy_Allowed=false로 설정하고 OrderSend() 전에 Buy_Allowed==true인 경우에만 매수 거래에 대한 실행 조건을 추가합니다. 반환 신호가 도착하면 Buy_Allowed=true 플래그를 재설정합니다. Sell 거래에 대한 동일한 계획이지만 Sell_Allowed 플래그가 있습니다.

감사합니다. 깨우쳐 드리겠습니다. 지난번 포스팅에 코드의 일부를 올렸습니다.

 

나는 스레드의 이름으로 여기에 왔습니다. instrument.info, 테스트됨 거래의 품질에 대해서는 논하지 않겠습니다 질문은 이것입니다 테스트할 때 테스트를 통과한 최대 로트가 0.1이었고 이것은 그럼에도 불구하고 잔액이 10000이라는 사실. 나는 Meta Trader 4 222에서 GBPUSD 15로 테스트했습니다. 흥미롭게도 다른 컴퓨터에서는 1랏으로 테스트가 잘 되었습니다. 캐치가 무엇입니까?

두 번째 질문: 테스트 보고서의 "일치하지 않는 오류"란 무엇입니까?

질문 3: 고문이 신호를 주지 않는 이유는 무엇입니까?이 질문은 첫 번째 질문 i. 프로그램에 버그가 있습니다.저는 MACD 샘플을 EURUSD M1(표준으로 제공됨)에 놓고 MACD OpenLevel 오프닝 레벨을 1로 낮췄습니다.

어렵지 않은 사람은 문맹자에게 설명하십시오.

 
xruss >> :

감사합니다. 깨우쳐 드리겠습니다. 지난번 포스팅에 코드의 일부를 올렸습니다.

 int    ORDtype = - 1 , ORDtime = 0 ;
double ORDprofit ;

for ( int i = OrdersHistoryTotal ( ) - 1 ; i > = 0 ; i - - ) {
  if ( OrderSelect ( i , SELECT_BY_POS , MODE_HISTORY ) ) {
    if ( OrderSymbol ( ) = = Symbol ( ) ) {
      if ( OrderCloseTime ( ) ! = 0 & & OrderCloseTime ( ) > ORDtime ) {
        ORDtime = OrderCloseTime ( ) ;
        ORDtype = OrderType ( ) ;
        ORDprofit = OrderProfit ( ) ;
      }
    }
  }
}

//........

if ( ORDtype = = - 1 )
{
  // В истории не нашлось подходящих ордеров
}

if ( ORDtype = = OP_SELL )
{
  // Последним был закрыт Sell
}

if ( ORDtype = = OP_BUY )
{
  // Последним был закрыт Buy
}
코드의 작업 버전. 수표(OrderCloseTime()>time)를 헛되이 제거했습니다. 그것 없이는 전체 포인트가 손실되기 때문입니다. 우리는 각 반복 주문의 마감 시간을 이전에 발견된 주문의 가장 오래된 마감 시간과 비교하여 가장 마지막 마감된 주문을 선택합니다. ORDtime 변수에 저장합니다. 당신은 역사의 모든 명령을 통과합니다. ORDprofit에 대한 조건도 있었지만 직접 추가할 수 있습니다. :)
 
Everlost >> :
코드의 작업 버전. 수표(OrderCloseTime()>time)를 헛되이 제거했습니다. 그것 없이는 전체 포인트가 손실되기 때문입니다. 우리는 각 반복 주문의 마감 시간을 이전에 발견된 주문의 가장 오래된 마감 시간과 비교하여 가장 마지막 마감된 주문을 선택합니다. ORDprofit에 대한 조건도 있었지만 직접 추가할 수 있습니다. :)

네, 라스트 오더에 차익이 있었다면 같은 방향으로 개봉을 금지하는 조건이 있었습니다 :)

매우 감사합니다!!!))

 
zas писал(а) >>

두 번째 질문: 테스트 보고서의 "일치하지 않는 오류"란 무엇입니까?

여러 번 물어보면 검색을 사용하는 것이 더 쉬울 것입니다 ...

자스 작성 >>

테스트할 때 테스트를 통과한 최대 로트가 0.1이었고 잔액이 10000임에도 불구하고 이것은 Meta Trader 4 222에서 GBPUSD 15로 테스트했습니다. 흥미롭게도 다른 컴퓨터에서는 1랏으로 테스트가 잘되었습니다. 캐치는 무엇입니까?

다른 컴퓨터에서 MT4가 다른 브로커의 계정에 연결되어 있는지, 다른 브로커, 다른 거래 조건... 아니면 어드바이저에서 무작위로 추첨이 결정됩니까?) 어드바이저 코드를 붙이면 정확한 답이 있을 것입니다.

자스 작성 >>

질문 3: 고문이 신호를 주지 않는 이유는 무엇입니까?이 질문은 첫 번째 질문 i. 프로그램에 버그가 있습니다.저는 MACD 샘플을 EURUSD M1(표준으로 제공됨)에 놓고 MACD OpenLevel 오프닝 레벨을 1로 낮췄습니다.

테스터인 경우 테스터의 로그를 확인합니다. 매개변수 세트와 어드바이저 테스트 결과(신호가 없는 경우)를 배치합니다. 당신의 모든 서투른 것들은 프로그램의 결함이 아니라 불충분 한 경험에서 비롯된 것 같습니다 ...

 
VladislavVG >> :

옵션 중 하나:

거래 시작 시 bool 변수 NeedAlert를 true로 설정합니다.


고마워, 젠장,하지만 나는 그것이 그렇게 작동하지 않을 것이라고 생각했다-주기가 작동하지 않을 것입니다. 중괄호를 잊어 버린 것으로 나타났습니다))

 
그리고 여기 질문이 있습니다. 20포인트에 대한 예상 이익이 현재 보증금의 4%가 되도록 로트 크기를 계산하는 방법은 무엇입니까?
 
xruss писал(а) >>

감사합니다. 깨우쳐 드리겠습니다. 지난번 포스팅에 코드의 일부를 올렸습니다.

 //+------------------------------------------------------------------+
// Проверка последнего ордера по условию                             |
//+------------------------------------------------------------------+
bool LastCloseOrd ( string Sy = "" ,//Если Sy=="" на принадлежность символу не проверяем
                   int   Type = - 1 ,//Если Typ==-1 любой тип ордера
                   int Magic = - 1 ,//Если Magic=-1любой магик
                   int Pr_Ls =    0 ) {//Если Pr_Ls =0 без проверки на профит, если <0 то фильтр лосевых , если >0 то фильтр профитных ордеров
                   int time=0 ;
if ( OrdersHistoryTotal ( ) < 1 ) { return ( false ) ; }//Если нет закрытых ордеров выходим 
   for ( int i = 0 ; i < OrdersHistoryTotal ( ) ; i + + ) {//Перебираем закрытые ордера
     if ( OrderSelect ( i , SELECT_BY_POS , MODE_HISTORY ) ) {//Выбираем ордер из истории
       if ( OrderCloseTime ( ) ! = 0 ) {//Если ордер уже закрыт
         if ( Sy = = "" | | OrderSymbol ( ) = = Sy ) {//если совпадает символ, или нет проверки на символ
           if ( Type = = - 1 | | OrderType ( ) = = Type ) {//если совпадает тип, или нет проверки на тип
             if ( Magic = = - 1 | | OrderMagicNumber ( ) = = Magic ) {//если совпадает магик , или не проверки на магик
               if ( OrderCloseTime ( ) > time ) {//если время закрытия ордера больше чем предыдущее
                time = OrderCloseTime ( ) ;//записываем время закрытия (в конце цикла у нас в ловушке булет сидеть последний закрытый ордер
               }                                                  //попадающий под все условия выставленных фильтров)
             }
           }
         }
       }
     }
   }   
if ( Pr_Ls = = 0&&time!=0 ) { return ( true ) ; }//если нет условия на профит-лосс подтверждаем наличие ордера
if ( Pr_Ls < 0 & & OrderProfit ( ) < 0 ) { return ( true ) ; }//если ордер лосевый подтверждаем наличие ордера
if ( Pr_Ls > 0 & & OrderProfit ( ) > 0 ) { return ( true ) ; }//если ордер профитный подтверждаем наличие ордера
return ( false ) ;//нет ни одного попадающего под выставленные условия ордера
} 
 

이것은 테스터의 오류에 관한 것입니다 ...........

아시는 분 계시면 알려주세요.....

')' - wrong parameters count	C:\Program Files\MetaTrader - Alpari\experts\expertCCI_WILLIAMS.mq4 (64, 37)
')' - wrong parameters count	C:\Program Files\MetaTrader - Alpari\experts\expertCCI_WILLIAMS.mq4 (65, 37)
숫자 64.37과 65.37은 무엇을 의미합니까????????????