포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 1153

 
kalmyk87 :

인사말! mql5 인증이 신호를 구독하는 metatrader4 프로그램에서 실패했습니다 ... 어떻게 해야할지 알려주세요!


세부 정보 및 스크린샷과 함께 서비스 데스크(왼쪽 프로필에 있음)에 요청을 작성하십시오.

 

올빼미는 마을과 별도로 구매 일정 당 여러 쌍, 바람직하게는 2 마리의 올빼미를 쟁기질해야합니다.

무한대로 열려 있기 때문에


int _OrdersTotal=OrdersTotal();

for (int i=_OrdersTotal-1; i>=0; i--) {

if (OrderSelect(i,SELECT_BY_POS)) {

if (OrderMagicNumber() == 매직) {

if (OrderSymbol() == Symbol()) {

(주문 유형() == OP_BUY) {

}}}}}}

if(MaPrevious>MaPrevious1) //개방 조건

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"macd 샘플",Magic,0,Green);

if(티켓>0)

{

if(OrderSelect(티켓,SELECT_BY_TICKET,MODE_TRADES))

Print("구매 주문이 열렸습니다 : ",OrderOpenPrice());

}

또 다른

Print("구매 주문 열기 오류: ", GetLastError() );

반품;

}

 

도움이 될 수 있는 사람

 

모두에게 좋은 하루!

표시기에서 신호 출력을 구현할 수 있다는 것을 알고 있습니다.

ㅏ). 닫기를 기다리지 않고 현재 표시줄에 표시됩니다. 이 경우 막대가 닫힌 후 신호가 취소될 수 있습니다.

비). 신호가 나타난 막대를 닫은 후.

옵션)에 관심이 있습니다. 막대가 닫힐 때까지 기다리지 않고 표시기에 경고를 표시하는 방법은 무엇입니까?

표시기 코드의 39행에서 매개변수 선택으로 형식을 지정하려고 했지만 작동하지 않았습니다. 제대로 하는 방법?


외부 정수 시프트 = 0; // 신호를 계산할 막대: 0 - 현재 막대에서; 1 - 폐쇄


도움을 주시면 대단히 감사하겠습니다!

파일:
 
Tornado :

모두에게 좋은 하루!

표시기에서 신호 출력을 구현할 수 있다는 것을 알고 있습니다.

ㅏ). 닫기를 기다리지 않고 현재 표시줄에 표시됩니다. 이 경우 막대가 닫힌 후 신호가 취소될 수 있습니다.

비). 신호가 나타난 막대를 닫은 후.

옵션)에 관심이 있습니다. 막대가 닫힐 때까지 기다리지 않고 표시기에 경고를 표시하는 방법은 무엇입니까?

표시기 코드의 39행에서 매개변수 선택으로 형식을 지정하려고 했지만 작동하지 않았습니다. 제대로 하는 방법?


외부 정수 시프트 = 0; // 신호를 계산할 막대: 0 - 현재 막대에서; 1 - 폐쇄


도움을 주시면 대단히 감사하겠습니다!


나는 이것을 꽤 많이 얻었다.

 //+---------------------------------------------------------------------------------+
//+ MA2_Signal                                                                      +
//+ Индикатор сигналов при пересечении 2-х средних                                  +
//+                                                                                 +
//+ Внешние параметры:                                                              +
//+  ExtPeriodFastMA - период быстой средней                                        +
//+  ExtPeriodSlowMA - период медленной средней                                     +
//+  ExtModeFastMA   - режим быстой средней                                         +
//+  ExtModeSlowMA   - режим медленной средней                                      +
//+   Режимы: 0 = SMA, 1 = EMA, 2 = SMMA (сглаженная), 3 = LWMA (взвешенная)        +
//+  ExtPriceFastMA  - цена быстрой средней                                          +
//+  ExtPriceSlowMA  - цена медленной средней                                       +
//+   Цены: 0 = Close, 1 = Open, 2 = High, 3 = Low, 4 = HL/2, 5 = HLC/3, 6 = HLCC/4 +
//+---------------------------------------------------------------------------------+
#property copyright "Copyright © 2015, Karakurt (mod. GromoZeka 2017)"
#property link        ""

//---- Определение индикаторов
#property indicator_chart_window
#property indicator_buffers 4
//---- Цвета
#property indicator_color1 Red // 5
#property indicator_color2 Green         // 7
#property indicator_color3 DeepSkyBlue
#property indicator_color4 Magenta
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
#property indicator_width4 2


//---- Параметры
extern int     ExtPeriodFastMA = 8 ;
extern int     ExtPeriodSlowMA = 20 ;
extern int     ExtModeFastMA   = 1 ; // 0 = SMA, 1 = EMA, 2 = SMMA, 3 = LWMA
extern int     ExtModeSlowMA   = 1 ; // 0 = SMA, 1 = EMA, 2 = SMMA, 3 = LWMA
extern int     ExtPriceFastMA  = 0 ; // 0 = Close, 1 = Open, 2 = High, 3 = Low, 4 = HL/2, 5 = HLC/3, 6 = HLCC/4
extern int     ExtPriceSlowMA  = 0 ; // 0 = Close, 1 = Open, 2 = High, 3 = Low, 4 = HL/2, 5 = HLC/3, 6 = HLCC/4
extern int shift= 0 ;       // На каком баре считать сигнал: 0 - на текущем; 1 - на закрытом
extern bool    EnableAlert= true ;
extern bool    EnableSendNotification= false ;
extern bool    EnableSendMail  =   false ;
extern bool    EnableSound     = false ;
extern string ExtSoundFileNameUp = "Покупаем.wav" ;
extern string ExtSoundFileNameDn = "Продаем.wav" ;

//---- Буферы
double FastMA[];
double SlowMA[];
double CrossUp[];
double CrossDown[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- Установка параметров прорисовки
//     Средние
   SetIndexStyle ( 0 , DRAW_LINE );
   SetIndexStyle ( 1 , DRAW_LINE );
//     Сигналы
   SetIndexStyle ( 2 , DRAW_ARROW , EMPTY );
   SetIndexArrow ( 2 , 233 );
   SetIndexStyle ( 3 , DRAW_ARROW , EMPTY );
   SetIndexArrow ( 3 , 234 );

//---- Задание буферов
   SetIndexBuffer ( 0 ,FastMA);
   SetIndexBuffer ( 1 ,SlowMA);
   SetIndexBuffer ( 2 ,CrossUp);
   SetIndexBuffer ( 3 ,CrossDown);

   IndicatorDigits ( MarketInfo ( Symbol (), MODE_DIGITS ));

//---- Название и метки
   IndicatorShortName ( "MA2_SignalV2(" +ExtPeriodFastMA+ "," +ExtPeriodSlowMA);
   SetIndexLabel ( 0 , "MA(" +ExtPeriodFastMA+ "," +ExtPeriodSlowMA+ ")" +ExtPeriodFastMA);
   SetIndexLabel ( 1 , "MA(" +ExtPeriodFastMA+ "," +ExtPeriodSlowMA+ ")" +ExtPeriodSlowMA);
   SetIndexLabel ( 2 , "Buy" );
   SetIndexLabel ( 3 , "Sell" );

   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   double AvgRange;
   int     iLimit;
   int     i;
   int     counted_bars= IndicatorCounted ();

//---- check for possible errors
   if (counted_bars< 0 )
       return ( - 1 );

//---- last counted bar will be recounted
   if (counted_bars> 0 ) counted_bars--;

   iLimit= Bars -counted_bars;

   for (i=iLimit; i>= 0 ; i--)
     {
      FastMA[i] = iMA ( NULL , 0 , ExtPeriodFastMA, 0 , ExtModeFastMA, ExtPriceFastMA, i );
      SlowMA[i] = iMA ( NULL , 0 , ExtPeriodSlowMA, 0 , ExtModeSlowMA, ExtPriceSlowMA, i );
      AvgRange=( iMA ( NULL , 0 , 10 , 0 , MODE_SMA , PRICE_HIGH ,i)- iMA ( NULL , 0 , 10 , 0 , MODE_SMA , PRICE_LOW ,i))* 0.1 ;
      CrossDown[i+ 1 ]= EMPTY_VALUE ;
      CrossUp[i+ 1 ]= EMPTY_VALUE ;

       if ((FastMA[i+ 1 ]>=SlowMA[i+ 1 ]) && (FastMA[i+ 2 ]<=SlowMA[i+ 2 ]) && (FastMA[i]>SlowMA[i])) // пересечение вверх
        { //
         CrossUp[i+ 1 ]=SlowMA[i+ 1 ]-Range* 0.75 ;
        }

       if ((FastMA[i+ 1 ]<=SlowMA[i+ 1 ]) && (FastMA[i+ 2 ]>=SlowMA[i+ 2 ]) && (FastMA[i]<SlowMA[i])) // пересечение вниз
        { //
         CrossDown[i+ 1 ]=SlowMA[i+ 1 ]+Range* 0.75 ;
        }
     }
   static datetime TimeAlert= 0 ;
   if (TimeAlert!= Time [ 0 ])
     {
      TimeAlert= Time [ 0 ];
       if (CrossUp[shift]!= EMPTY_VALUE )
        {
         if (EnableAlert) Alert ( "MA 8-20 " , Symbol (), " " , Period (), "M - BUY " ); // звуковой сигнал
         if (EnableSound) PlaySound (ExtSoundFileNameUp);
         if (EnableSendNotification) SendNotification ( "MA 8-20 EUR_H1 - BUY" ); // push-уведомление
         if (EnableSendMail) SendMail ( "MA 8-20: " , Symbol ()+ " , " + Period ()+ " мин.-  BUY!" ); // email-уведомление
        }
       if (CrossDown[shift]!= EMPTY_VALUE )
        {
         if (EnableAlert) Alert ( "MA 8-20 " , Symbol (), " " , Period (), "M - SELL " ); // звуковой сигнал
         if (EnableSound) PlaySound (ExtSoundFileNameDn);
         if (EnableSendNotification) SendNotification ( "MA 8-20 EUR_H1 - SELL" ); // push-уведомление
         if (EnableSendMail) SendMail ( "MA 8-20: " , Symbol ()+ " , " + Period ()+ " мин.- SELL!" ); // email-уведомление
        }
     }
   return ( 0 );
  }
//+------------------------------------------------------------------+

일부 초과를 제거했습니다. 단순화 된 것

 
Victor Nikolaev :

나는 이것을 꽤 많이 얻었다.

일부 초과를 제거했습니다. 단순화 된 것


매우 감사합니다! 노력하겠습니다.

 
Victor Nikolaev :

대충 이렇게 받았어요

일부 초과를 제거했습니다. 단순화 된 것


불행한 일이지만 작동하지 않습니다. 더 빠르게 확인하기 위해 M5 타임프레임에 사용해 봤습니다. 신호는 막대가 닫힌 후에만 나타났으며 평균이 현재 막대를 넘었을 때는 나타나지 않았습니다. 큰 프레임에서 테스트 중입니다.

 
//+------------------------------------------------------------------+
class A
  {
public : int        propA;
public :
                     A( void ) {propA = 15 ;};
                    ~A( void ) {};
  };
//+------------------------------------------------------------------+
class B: public A
  {
public :
                     B( void ){};
                    ~B( void ){};
  };
//+------------------------------------------------------------------+
void OnStart ()
  {
   B newObj;
   GetA(newObj);
//---
   //B newObjArray[3];
   //GetA_Array(newObjArray);
  }
//+------------------------------------------------------------------+
void GetA(A &obj)
  {
   Print (obj.propA);
  }
//+------------------------------------------------------------------+
void GetA_Array(A &obj[])
  {
   for ( int i= 0 ;i< ArraySize (obj);i++)
       Print (obj[i].propA);
  }
//+------------------------------------------------------------------+

OnStart()에서 나머지 줄의 주석 처리를 제거하면 "newObjArray - 매개변수 변환이 허용되지 않음"이 표시됩니다.

2가지 질문: 왜, 어떻게 고칠까요?

 
Tornado :

불행한 일이지만 작동하지 않습니다. 더 빠르게 확인하기 위해 M5 타임프레임에 사용해 봤습니다. 신호는 막대가 닫힌 후에만 나타났으며 평균이 현재 막대를 넘었을 때는 나타나지 않았습니다. 큰 프레임에서 테스트 중입니다.


서로를 이해하지 못하는 것 같습니다.

 

안녕 친구들.

손절매, 기술 이익 및 후행 값을 포인트가 아닌 백분율로 표시하는 방법.

이 공식은 매우 복잡하고 전혀 작동하지 않습니다.

StopLoss=NormalizeDouble(Bid-(Bid-TrailingStop)/100*TRAL_PERCENT, Digits );

가장 간단한 종류의 백분율을 원합니다.

이중 손절매 = 0.05;

--------

Profit=Bid-Stoploss 백분율(서투른 예이지만 이해를 위해)

고맙습니다.