코딩 도움말 - 페이지 778

 

누군가 이 코드를 더 짧게 만드는 방법을 알려줄 수 있습니까? 이를 위해 사이클을 사용하는 방법은 무엇입니까?

extern double S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,S15;
if (S1== 1234 ) S1= DoubleToString (S1);
if (S2== 1234 ) S2= DoubleToString (S2);
if (S3== 1234 ) S3= DoubleToString (S3);
if (S4== 1234 ) S4= DoubleToString (S4);
if (S5== 1234 ) S5= DoubleToString (S5);
if (S6== 1234 ) S6= DoubleToString (S6);
if (S7== 1234 ) S7= DoubleToString (S7);
if (S8== 1234 ) S8= DoubleToString (S8);
if (S9== 1234 ) S9= DoubleToString (S9);

이와 같은 것을 원하지만 변수 이름을 변경하는 방법을 모릅니다.

 for (i= 1 ; i<=9; i++){
if (S+i== 1234 ) S+i= DoubleToString (S+i);
}
 
Karel Nagel :

누군가 이 코드를 더 짧게 만드는 방법을 알려줄 수 있습니까? 이를 위해 사이클을 사용하는 방법은 무엇입니까?

이와 같은 것을 원하지만 변수 이름을 변경하는 방법을 모릅니다.

MQL의 제한 사항으로 인해 입력 목록으로 배열을 초기화할 수 없습니다. ( { 2, 5, 3.1 } 과 같은 상수 표현식만 가능합니다.)

그러나 어쨌든 double을 문자열로 변환해야 하기 때문에 StringFormat 을 사용할 수 있습니다. 이 함수의 흥미로운 점은 임의의 수의 인수를 허용한다는 것입니다.

StringSplit 의 도움으로 즉석에서 배열을 만드는 데 사용할 수 있습니다.

 string line= StringFormat ( "%g %g %g %g %g %g %g %g %g" ,S1,S2,S3,S4,S5,S6,S7,S8,S9);
string numbers[];
int count= StringSplit (line, ' ' ,numbers);
for ( int i= 0 ; i<count; i++)
  {
   if (numbers[i]== "1234" ) Print ( " S" ,i+ 1 , " == 1234" );
  }
 
rsiArray[ 0 ] = iRSI ( NULL , 0 , 10 , PRICE_CLOSE , 1 );
rsiArray[ 1 ] = iRSI ( NULL , 0 , 10 , PRICE_CLOSE , 2 );
rsiArray[ 2 ] = iRSI ( NULL , 0 , 10 , PRICE_CLOSE , 3 );
rsiArray[ 3 ] = iRSI ( NULL , 0 , 10 , PRICE_CLOSE , 4 );
rsiArray[ 4 ] = iRSI ( NULL , 0 , 10 , PRICE_CLOSE , 5 );
ArraySetAsSeries (rsiArray, true ); 

upperEnv = iEnvelopesOnArray(rsiArray, 0 , 5 , MODE_SMA , 0 , 5 , MODE_UPPER, 0 );
lowerEnv = iEnvelopesOnArray(rsiArray, 0 , 5 , MODE_SMA , 0 , 5 , MODE_LOWER, 0 ); 

너무 오랫동안 이것을 알아 내려고 노력해 왔으며 도움이 필요합니다.

봉투 값은 rsiArray[0] 또는 차트에서 볼 수 있는 값과 일치하지 않으며 이유를 알 수 없습니다.


어떤 아이디어?


감사해요

편집: (고정) 알겠습니다. mt4를 다시 시작하기만 하면 코드가 제대로 작동했습니다.

 

나는 EA/유틸리티가 올바르게 작동하도록 하기 위해 몇 시간을 보냈고 내 두뇌가 마비될 때까지 몇 가지를 변경했습니다. 첨부된 것은 예비 버전이며 미결 매수/매도 주문이 추가될 때 알람이 울리고 미결 주문 매수/매도가 마감될 때 다른 알람이 울리는 기본 기능의 장애물을 통과하면 개선할 것입니다. 이 버전은 때때로 작동하고 때로는 이 시점에서 그다지 신뢰할 수 없습니다.


 //+------------------------------------------------------------------+
//|               myNotify.mq4                                       |
//|               Notify me by sound file of change in orders        |
//+------------------------------------------------------------------+

//---- input parameters
extern string OrderClosedWav = "OrderClosed.wav" ;
extern string OrderOpenedWav = "OrderOpened.wav" ;
string sVersion = "1.39" ;
int iOld, iNew = 0 ;
int i = 0 ;
uchar ii = 0 ;
long NewOrdersHash = 0 ;
long OldOrdersHash = 0 ;

int nOrders = 0 ;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return ( 0 );
  }
// +------------------------------------------------------------------+
// |  expert deinitialization function                                |
// +------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+

int start()
{ 
    nOrders = 0 ;
    NewOrdersHash = 0 ;

//First Pass
     for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)
       {
         OrderSelect (i, SELECT_BY_POS);
         if (OrderType() < 2 )           // NOT "OP_BUYLIMIT" || "OP_BUYSTOP" //|| "OP_SELLLIMIT" || "OP_SELLSTOP")
         {
           NewOrdersHash = NewOrdersHash + OrderTicket();
           nOrders++;
         } 
       } 

OldOrdersHash = NewOrdersHash;
iOld =nOrders;

     Comment ( "Ver " ,sVersion, " \n" ,
         iOld, "\n" , iNew, "\n\n" , ii, "\n\n" ,
         OrderOpenedWav, "\n" ,
         OrderClosedWav, "\n\n" ,
         "Old:  " ,OldOrdersHash, "\n" ,
         "New: " ,NewOrdersHash, "\n\n" ,
         nOrders, "\n" );
// Wait
         Sleep ( 2000 );

//Second Pass to compare after short pause
    nOrders = 0 ;
    NewOrdersHash = 0 ;
     for (i= OrdersTotal ()- 1 ;i>= 0 ;i--)
       {
         OrderSelect (i, SELECT_BY_POS);
         if (OrderType() < 2 )           // NOT "OP_BUYLIMIT" || "OP_BUYSTOP" //|| "OP_SELLLIMIT" || "OP_SELLSTOP")
         {
           NewOrdersHash = NewOrdersHash + OrderTicket();
           nOrders++;
         } 
       } 
iNew = nOrders;

     if (ii > 24 ) {ii = 1 ;} else {ii++;}
       
     Comment ( "Ver " ,sVersion, " \n" ,
         iOld, "\n" , iNew, "\n\n" , ii, "\n\n" ,
         OrderOpenedWav, "\n" ,
         OrderClosedWav, "\n\n" ,
         "Old:  " ,OldOrdersHash, "\n" ,
         "New: " ,NewOrdersHash, "\n\n" ,
         nOrders, "\n" );
     if (OldOrdersHash != NewOrdersHash)
    {
     if (iNew > iOld)
       PlaySound (OrderOpenedWav);
     else
       PlaySound (OrderClosedWav);
    }

return ( 0 );

}  

/*
void OrdersF()
   {

    nOrders = 0;
    NewOrdersHash = 0;
    for(int i=OrdersTotal()-1;i>=0;i--)
       {
         OrderSelect(i, SELECT_BY_POS);
         if (OrderType() < 2)          
         {
           NewOrdersHash = NewOrdersHash + OrderTicket();
           nOrders++;
         } 
       } 
    iNew = nOrders;
    return;
   }
*/
//+------------------------------------------------------------------+

 

안녕하세요 여러분, 저는 새내기입니다. 이 표시기를 아주 간단하게 편집하고 싶습니다.

Horizontal Line 의 Description 상자에 Alert_ 라는 단어를 어떻게 그리고 어디에 입력합니까?

자동으로 나타나게 하려면?

귀하의 응답을 기대합니다



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

//|                                              horizontal line.mq4 |
//|                                                          Wdholic |
//|                            https://www.mql5.com/en/users/wdholic |
//+------------------------------------------------------------------+
#property copyright "Wdholic"
#property link        "https://www.mql5.com/en/users/wdholic"
#property version    "1.00"
#property strict

#import "cfunctions.dll" 
int       MT4_ScreenToClient( int hWnd, int & iX[]);  
#import
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  { 
     double pmax= ChartGetDouble ( 0 , CHART_PRICE_MAX );
     double pmin= ChartGetDouble ( 0 , CHART_PRICE_MIN );
     double Ymax= ChartGetInteger ( 0 , CHART_HEIGHT_IN_PIXELS )* 1.0 ;
   //  Alert(pmin);Alert(pmax);Alert(Ymax);
   int iCoords[ 2 ] ;
     int hWin = WindowHandle( Symbol (), Period ());  
   
    MT4_ScreenToClient(hWin, iCoords);    
               
     double cory=iCoords[ 1 ]* 1.0 ;
     double range=(pmax-pmin);
    
     double XY= (cory* 1.0 )/Ymax;
       double P=pmax-XY*range;
     
        
   Line( "test_" ,P, clrAqua );
   WindowRedraw();
   return ;
  }
//+------------------------------------------------------------------+

void Line( string t, double P, color C )
{ int a= 1 ; string nm;
    nm= "line_" +t+ string (a);
   while ( ObjectFind ( 0 ,nm)== 0 ){ a++; nm= "line_" +t+ string (a);}
  
if ( ObjectFind ( 0 ,nm)< 0 ){
   ObjectCreate ( 0 ,nm, OBJ_HLINE , 0 , 0 , 0 ); 
  ObjectSet( nm, OBJPROP_COLOR ,C);}
  ObjectSet( nm,OBJPROP_PRICE1,P);  
  ObjectSet( nm, OBJPROP_SELECTED , 1 );  
}

 

누구든지 이것을 코딩하는 데 도움을 줄 수 있습니까? 그림과 같이 Rectangle을 지난 3개월의 높고 낮음으로 설정합니다.

파일:
INDIxxx.jpg  243 kb
 

누군가 이전 ma cross에서 stoploss를 도와줍니다.



 

안녕,

아이디어가 있습니다. 그러나 나는 mq4 코드를 잘 모릅니다.

이전 고가가 이전 고가 2위보다 낮으면 이전 고가 * 2% 또는 1%에서 보류 중인 주문 을 매수하고 현재 캔들 가격이 해당 주문에 닿으면 매수합니다.

이전 저점이 두 번째 이전 저점보다 높으면 이전 저점 * -2% 또는 -1%에서 보류 중인 주문을 매도하고 현재 캔들 가격이 해당 주문을 매도합니다.

모든 기간. 목표 없음 손절매 없음. 반대처럼 후행 정지 손실.

mq4 코드를 만들 수 있는 모든 사람에게 감사합니다. 도움이 필요해 MT4만 가능합니다.

 

안녕 ...

전문가를 만들 수 있습니까?   이 전략을 제발

강화 전문가

설정 :

1.     옵션: 매도만 / 매수만

2.     TP: 50

삼.     슬: 00

4.     단계: 150

5.     시작 부지: 0,1

6.     곱셈: 1.2.4.8.16 … ..

7.     총 주문: 100

8.     매직넘버: 111111

작업 방법 :

1-    지정된 로트 크기에 따라 시작 시 자동으로 포지션 오픈 .

2-    각 강화에 대한 모든 거래에 대한 Tp 변경 .

다음 방정식에 따르면: 마지막 더블 포지션의 Tp는 마지막 포지션의 모든 유동 손실 + 이익을 포함합니다. .

삼-    초기 부지로 돌아가기 .

 

 

 
BANSINO Money Maker :

안녕 ...

전문가를 만들 수 있습니까?   이 전략을 제발

강화 전문가

설정 :

1.     옵션: 매도만 / 매수만

2.     TP: 50

삼.     슬: 00

4.     단계: 150

5.     시작 부지: 0,1

6.     곱셈: 1.2.4.8.16 … ..

7.     총 주문: 100

8.     매직넘버: 111111

작업 방법 :

1-    지정된 로트 크기에 따라 시작 시 자동으로 포지션 오픈 .

2-    각 강화에 대한 모든 거래의 Tp 변경 .

다음 방정식에 따르면: 마지막 더블 포지션의 Tp는 마지막 포지션의 모든 유동 손실 + 이익을 포함합니다. .

삼-    초기 부지로 돌아가기 .

 

 

프리랜서 섹션에 작업으로 게시하십시오.