초보자의 질문 MQL4 MT4 MetaTrader 4 - 페이지 27

 
Movlat Baghiyev :
다음은 클로징 조건인데 역시그널을 사용하고 있는데 동작하지 않습니다 거래는 스톱이나 테이크로만 클로징되는데 이유가 뭔가요?

옳지 않다.
시작 시 조건이 있어야 하고 시작 시 종료 기능이 있어야 합니다.

int  i;
// 
void Start() {

if  ((FMA1<GrossMA1 && FMA2>GrossMA2 &&  Bid <FMA1-Distanse*GetPoint()) // тут так надо бы  Bid < NormalizeDouble (FMA1-Distanse*GetPoint(), Digits )
   || (FRMA1>GrossMA1 && FRMA2<GrossMA2  &&   Ask >FRMA1+Distanse*GetPoint())){
for (i= OrdersTotal() -1;i>=0;i--) if( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderSymbol() == Symbol() && OrderMagicNumber() ==magic) {
if  ( OrderType ()== OP_BUY ||  OrderType ()== OP_SELL)  CloseOpBuySell(); // тут закроются все ордера и бай и селл
    }
  }

} // end start

void CloseOpBuySell()

for (i= 0 ;i< OrdersTotal ();i++) 
  { 
   if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES )) 
   { 
     if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==magic ) //свой магик
    { 
       if ( OrderType ()== OP_BUY
        { 
          if ( OrderClose ( OrderTicket (), OrderLots (), NormalizeDouble ( Bid , Digits ), 3 ,LawnGreen);  { continue ;}
        } 
       if ( OrderType ()== OP_SELL
        { 
          if ( OrderClose ( OrderTicket (), OrderLots (), NormalizeDouble ( Ask , Digits ), 3 ,LawnGreen);  { continue ;}
        } 
      } 
    } 
  } 
   return ;
  }

한 번에 모두가 아닌 별도의 조건에서 닫아야 하는 경우 닫기 기능이 달라야 합니다.
 
Natashe4ka :

옳지 않다.
시작 시 조건이 있어야 하고 시작 시 종료 기능이 있어야 합니다.

한 번에 모두가 아니라 별도의 조건에서 닫아야 하는 경우 닫기 기능이 달라야 합니다.

맞아 이미 해류를 해서 그에게 던졌으니 침묵한다

int start()
{
     //закрытие по МА-шкам
   if (FMA1<GrossMA1 && FMA2>GrossMA2 && Bid <FMA1-Distanse*GetPoint()) CloseOpBuySell( "BUY" );
   if (FRMA1>GrossMA1 && FRMA2<GrossMA2  &&   Ask >FRMA1+Distanse*GetPoint()) CloseOpBuySell( "SELL" );
   return ( 0 );
}
//----
//-----------------------------------+

void CloseOpBuySell( string TypeClose)
   {
       for ( int i= 0 ;i< OrdersTotal ();i++)
         {
             if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
               {
                   if ( OrderSymbol ()== Symbol () && OrderMagicNumber ()==mn )
                      {
                         if (TypeClose== "BUY" )
                          {
                               if ( OrderType ()== OP_BUY ) OrderClose ( OrderTicket (), OrderLots (), Bid , 3 ,LawnGreen);
                           }
                         if (TypeClose== "SELL" )
                          {
                               if ( OrderType ()== OP_SELL ) OrderClose ( OrderTicket (), OrderLots (), Ask , 3 ,LawnGreen);
                          }
                     }
               }
         }
   }
 
Renat Akhtyamov, Natashe4ka 대단히 감사합니다.

 
lot= NormalizeDouble ( AccountBalance ()*MaximumRisk/( MarketInfo ( Symbol (), MODE_MARGINREQUIRED )* 100 ), 1 );
다음은 로트 계산 옵션입니다. MaximumRisk==100 . 매회 자동 계산되는 로트가 최대로 필요합니다. 저는 MaximumRisk==100으로 설정하여 거래를 시작할 때 가능한 최대 로트를 계산합니다. 얼마나 정확합니까?
 
Movlat Baghiyev :
lot= NormalizeDouble ( AccountBalance ()*MaximumRisk/( MarketInfo ( Symbol (), MODE_MARGINREQUIRED )* 100 ), 1 );
다음은 로트 계산 옵션입니다. MaximumRisk==100 . 매회 자동 계산되는 로트가 최대로 필요합니다. 저는 MaximumRisk==100으로 설정하여 거래를 시작할 때 가능한 최대 로트를 계산합니다. 얼마나 정확합니까?

대차 대조표가 아닌 무료 자금을 기준으로 계산하는 것이 더 정확합니다. 그렇지 않으면 거래가 열릴 때 감당할 수 있는 것보다 훨씬 더 많은 것을 얻을 위험이 있습니다.

글쎄, 로트 단계에 대한 종속성을 확인한 다음 로트가 계정에서 허용되는 최대 및 최소 로트를 초과하는지 확인하십시오.

int MaximumRisk= 100 ;
double lots,lotstep,free,margin, lotmin, lotmax;

lotmax= MarketInfo ( Symbol (), MODE_MAXLOT );
lotmin= MarketInfo ( Symbol (), MODE_MINLOT );
lotstep = MarketInfo ( Symbol (), MODE_LOTSTEP );
reqmargin = MarketInfo ( Symbol (), MODE_MARGINREQUIRED );
free= AccountFreeMargin ();

lots = NormalizeDouble (lotstep* MathRound ((free*MaximumRisk* 0.01 /reqmargin)/lotstep), 2 );

if (lots < lotmin) lots = lotmin;
if (lots > lotmax) lots = lotmax;
 
Vitalie Postolache :


등록했습니다. 감사합니다. 확인해봅시다. 무슨 일이..
 
Vitalie Postolache :

대차 대조표가 아닌 무료 자금을 기준으로 계산하는 것이 더 정확합니다. 그렇지 않으면 거래가 열릴 때 감당할 수 있는 것보다 훨씬 더 많은 것을 얻을 위험이 있습니다.

글쎄, 로트 단계에 대한 종속성을 확인한 다음 로트가 계정에서 허용되는 최대 및 최소 로트를 초과하는지 확인하십시오.

int MaximumRisk= 100 ;
double lots,lotstep,free,margin, lotmin, lotmax;

lotmax= MarketInfo ( Symbol (), MODE_MAXLOT );
lotmin= MarketInfo ( Symbol (), MODE_MINLOT );
lotstep = MarketInfo ( Symbol (), MODE_LOTSTEP );
reqmargin = MarketInfo ( Symbol (), MODE_MARGINREQUIRED );
free= AccountFreeMargin ();

lots = NormalizeDouble (lotstep* MathRound ((free*MaximumRisk* 0.01 /reqmargin)/lotstep), 2 );

if (lots < lotmin) lots = lotmin;
if (lots > lotmax) lots = lotmax;
이 옵션은 정상적으로 작동하지 않습니다 .. 하나의 거래가 가능한 최대 로트로 열리며 첫 번째 거래를 닫은 후 두 번째 거래가 열리지 않고 돈이 충분하지 않다고 말합니다 ..
 

움직이는:

게보그 하코비안 , 2016.12.08 15:26

안녕하세요. Meta Trader 4 통화 쌍에 있는 모든 기존 목록을 얻으려면 어떻게 해야 합니까? 그리고 목록의 변경 사항을 어떻게 알 수 있습니까?
 
Vladimir Karputov :

움직이는:

게보그 하코비안 , 2016.12.08 15:26

안녕하세요. Meta Trader 4 통화 쌍에 있는 모든 기존 목록을 얻으려면 어떻게 해야 합니까? 그리고 목록의 변경 사항을 어떻게 알 수 있습니까?

기호총계

사용 가능한(MarketWatch 또는 모두에서 선택됨) 기호 수를 반환합니다.

정수 기호총계 (
    부울    선택된        // true - MarketWatch의 기호만
);

옵션

선택된

【인】 요청 모드입니다. 참 또는 거짓일 수 있습니다.

반환 값

선택한 매개변수가 true이면 MarketWatch에서 선택한 기호 수가 반환됩니다. 값이 false이면 모든 문자의 총 수가 반환됩니다.

 
Vladimir Karputov :

움직이는:

게보그 하코비안 , 2016.12.08 15:26

안녕하세요. Meta Trader 4 통화 쌍에 있는 모든 기존 목록을 얻으려면 어떻게 해야 합니까? 그리고 목록의 변경 사항을 어떻게 알 수 있습니까?
그리고 전송된 것에서 크로스 플랫폼에서 작동하는 코드를 작성하는 것이 실제로 불가능합니까? 두 플랫폼에서 문자를 얻는 작업에는 차이가 없습니다.