출시 후 다음 조건에서 5분 차트의 과정을 따를 전문가 고문: - 페이지 7

 
정수 시작()
{
if( OrdersTotal() !=0) 반환;

//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //가격이 델타 포인트보다 많이 떨어졌습니다.
........


 
zhuki :
if( OrdersTotal ()!=0) 반환;

그리고 다른 사람들의 명령(다른 기호 및 다른 마법에 대한) ??? 테스터에서 작동하지만 이 어드바이저 외에 계정에 다른 것이 있으면 다음과 같이 더 정확합니다.

 bool NmbrOfOpened ( int Magic ){
 
   int  _OrdersTotal = OrdersTotal () ;
 
   if ( _OrdersTotal > 0 ) {
       for ( int i = 0 ; i < _OrdersTotal ; i ++ ) {    
         OrderSelect ( i , SELECT_BY_POS , MODE_TRADES ) ;
         if ( OrderMagicNumber () == Magic && OrderSymbol () == Symbol ()) {
            return ( true ) ;  break ; 
         }
       }
   }
   else return ( false ) ; 
 return ( false ) ;
}

주어진(전달된) 마법으로 현재 기호에 대한 열린 위치가 없으면 함수는 false를 반환합니다.

 
친애하는, 그러한 계산으로 당신은 그 사람을 오도하게 될 것이며 그는 설명을 읽는 방법을 모릅니다.
그가 얼마나 혼란스러워하는지 상상해보십시오. 그래서 내가 그에게 더 명확하도록 썼습니다.
 
그건 그렇고, 나는 이미 웃고 있습니다 :))
두 경우 모두 해결되었습니다. 많은 분들이 감사드립니다.
 
전문가에게만 델타 기능이 작동하는 방식에 대해 여전히 혼란스럽습니다.
거래가 내 조건에 맞지 않습니다
델타=30
이것은 EA가 포인트에서 +-30 포지션을 열기 를 원한다는 것을 의미합니다. 그리고 5~10포인트에서 성장과 하락으로 열리는데 불명....
 
정말, Delta 함수는 어떻게 이해하지 못합니다 :(
다른 간단한 솔루션이 있습니까?
나는 여기서 하나의 기능을 파헤쳤다.
거리
=30 // 현재 가격에서 대기 중인 주문 가격 까지의 거리
보류 중인 주문에 대해서만 구현할 수 있습니까?
아이디어의 본질은 동일합니다. 현재 막대, 시작 가격을 따르고 5분 막대 동안 이 가격에서 가격이 오르거나 내리면 이 5분 막대의 시작 시장에서 30포인트 떨어져 있다고 가정합니다. 바, 그 다음에야 포지션을 엽니다. . . . . . . . . .
보류중인 주문으로 내 전략이 작동하지 않습니다 .....

 

여기에 전체 코드를 게시하시겠습니까? 그리고 델타가 작동하지 않는 이유를 보자..

 
//+------------------------------------------------------------------+
//|                                                Expert-000001.mq4 |
//|                                    Copyright © 2008, salesman*** |
//|                                         http://www.forexgrand.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, salesman***"
#property link      "http://www.forexgrand.ru"
#include <WinUser32.mqh>
#include <stdlib.mqh>
extern double StopLoss=30;                        // Stop Loss
extern double TakeProfit=3;                       // Take Profit
extern double Lots=0.5;                           // Объем сделки в %
extern double Slippage =3;                        // Максимальное отклонение от запрошенной цены
extern double MagicNumber=0;                      // Order ID
int  ticket;
int Delta=30;                                     // Сигнал приказа в пунктах
int TimeForSleep = 10;                            // Время для отдыха после сделки

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
{
if(OrdersTotal()!=0)  return; //Выполнять только одну сделку.

//----
if (iOpen(NULL,0,0)-Ask>=Delta*Point) //Цена упала больше или = Delta пунктов
//Null-тек инструмент, 0-тек.график, 0-слежка за тек баром
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил",MagicNumber,11111,Green);

}
if (iOpen(NULL,0,0)-Bid<=Delta*Point) //Цена выросла больше или = Delta пунктов
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Продал",MagicNumber,22222,Green);
}
//----
return(0);
}




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

여기 전체 코드가 있습니다 .....
 

네 확실합니다. 델타가 작동하지 않습니다...

분명히 여기에서 사고 팔 때 델타의 기호(극성)를 처리해야 합니다. 위 코드에서 "왜냐하면" 예를 들어 구매할 때 값( iOpen (NULL,0,0)-Ask는 항상 음수.그리고 거래는 Bar 시작가 직후에 열립니다 (iOpen(NULL,0,0)-Ask>=Delta...

그렇다면 시도(구매) -

 if ( Ask - iOpen ( NULL , 0 , 0 ) >= Delta * Point ) //Цена выросла на больше или = Delta пунктов
 
저것들. 결국 이 옵션을 테스트해야 합니다.

정수 시작()
{
if( OrdersTotal() !=0) 반환; // 한 번의 거래만 수행합니다.

//----
if (Bid - iOpen(NULL,0,0)<=Delta*Point) //가격 하락 또는 = Delta 포인트
//Null-tech 악기, 0-현재 차트, 0-현재 막대 추적
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"구매",MagicNumber,11111,Green);

}
if (Ask - iOpen(NULL,0,0)>=Delta*Point) //가격이 더 오르거나 = Delta 포인트
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Sold",MagicNumber,22222,Green);
}
//----
반환(0);
}
다음 행에서 Ask with Bid가 정확하거나 혼동됩니까?
if (Bid - iOpen(NULL,0,0)<=Delta*Point) //Цена упала на меньше или = Delta пунктов

if (Ask - iOpen(NULL,0,0)>=Delta*Point) //Цена выросла на больше или = Delta пунктов