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

 
Multy :

판야트나.

그건 그렇고, MQL4에는 타이머가 있습니까 아니면 MQL5에만 있습니까?

아마도 다음 기능만 있을 것입니다.

https://www.mql5.com/en/search?utm_campaign=MQL4.community

https://www.mql5.com/en/search?utm_campaign=MQL4.community
 
kwadrad :

선배들에게 질문

갑자기 테스터가 작동을 멈추고 기록 데이터를 긁지 않습니다.

그를 어떻게해야합니까?

정보: 견적 아카이브가 로드되었습니다.


터미널을 다시 시작하고 C:\Program Files\MetaTrader - Alpari\history\Alpari-Micro2 폴더에서 다운로드한 인용문을 예비 삭제하여 도움을 받았습니다.

그런 다음 따옴표 아카이브를 다시 다운로드했습니다.

 
Noterday :
가능한 최대 주문량을 계산하는 기능을 알려주실 수 있습니까?
미끼를 주세요... :)
아래 함수에는 필요한 매개변수를 계산하는 데 필요한 모든 데이터가 있습니다. 너무 게을러서 열쇠도 두드리고...

스스로 필요한 것을 찾아서 리메이크할 것입니다... 코드 자체는 너무 간단하고 접근이 용이하여 다른 사람이 리메이크하는 것이 어렵지 않을 것입니다...

 // ==========================================================================
// ------------ Функция рассчёта величины лота для открытия позиции ---------
// Если лот превышает возможный для открытия позы, то он корректируется 
// ==========================================================================

double CorrectLots( double lt, double divider= 4.0 )         // lt = проверяемый лот, divider = на сколько разделить
{                                                         //                                 свободные средства
   double ltcorr;
   double pnt =      MarketInfo( Symbol (),MODE_POINT);
   double mspr =     MarketInfo( Symbol (),MODE_SPREAD);
   double dig =      MarketInfo( Symbol (),MODE_DIGITS);
   double MaxLot =   MarketInfo( Symbol (),MODE_MAXLOT);
   double MinLot =   MarketInfo( Symbol (),MODE_MINLOT);
   double StpLot =   MarketInfo( Symbol (),MODE_LOTSTEP);
   double OneLot =   MarketInfo( Symbol (),MODE_MARGINREQUIRED);
   double TradeMrg = NormalizeDouble (AccountFreeMargin()/divider,dig);   // Свободные средства, разрешенные к торговле
   
   lt= MathAbs (lt);
   ltcorr=lt;                       // Зададим начальное значением ltcorr равным значению lt
   
   if (lt>=MaxLot) ltcorr=MaxLot;   // Проверим превышение допустимых ...
   if (lt<=MinLot) ltcorr=MinLot;   // ... значений лота
   
   double Money=lt*OneLot+mspr*pnt; // Вычисляем стоимость открываемой позы

   if (Money<TradeMrg)               // Если свободных средств больше, чем цена позиции - 
      {
         return (ltcorr);                                                         // ... возвращаем неизменённый лот
      }
   else if (Money>=TradeMrg)         // Если цена позиции равна или больше, чем есть свободных средств, то ...
      {
         ltcorr= MathAbs ( MathFloor (TradeMrg/OneLot/StpLot)*StpLot);               // ... рассчитаем допустимый лот
         double MoneyCorr=ltcorr*OneLot+mspr*pnt;                      
         Print ( "Func CorrectLots: лот " ,lt, " скорректирован до " ,ltcorr,
               " Стоимость позы до корректировки = " ,Money,
               " Стоимость позы после корректировки = " ,MoneyCorr
               ); 
         return (ltcorr);                                                         // ... и вернём его значение
      }
   Print ( "Func CorrectLots: лот вернули без изменений" );
   return (ltcorr);                 // Возврат изначального лота в непредусмотренных случаях с сообщением
}

하나의 질문...

전쟁 말기에 히틀러가 그랬던 것처럼 무역이 왜 필요합니까... 그는 아이들을 히틀러 유스, 말하자면 파우스트 탄약 한 발을 위한 고기로 모집했습니다...

아무것도 생각나지 않아????

IMHO 물론...

 
artmedia70 :
미끼를 주세요... :)
아래 함수에는 필요한 매개변수를 계산하는 데 필요한 모든 데이터가 있습니다. 너무 게을러서 열쇠도 두드리고...

스스로 필요한 것을 찾아서 리메이크할 것입니다... 코드 자체는 너무 간단하고 접근이 용이하여 다른 사람이 리메이크하는 것이 어렵지 않을 것입니다...

하나의 질문...

전쟁 말기에 히틀러가 그랬던 것처럼 무역이 왜 필요합니까... 그는 아이들을 히틀러 유스, 말하자면 파우스트 탄약 한 발을 위한 고기로 모집했습니다...

아무것도 생각나지 않아????

IMHO 물론...


고맙습니다!

나는 최대 볼륨 으로 열지 않을 것입니다. 더 많은 수학적 연산을 위해 Depot의 크기를 기반으로 계산하면 됩니다 =))

 
Noterday :

고맙습니다!

나는 최대 볼륨으로 열지 않을 것입니다. 더 많은 수학적 연산을 위해 Depot의 크기를 기반으로 계산하면 됩니다 =))



구매:

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_BUY,lot),2);

판매용:

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_SELL,lot),2);

lot - 주문량을 나타내는 변수

계산 결과는 >0인지 확인해야 합니다.

https://www.mql5.com/ru/search

 
IgorM :


구매:

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_BUY,lot),2);

판매용:

NormalizeDouble(AccountFreeMargin()-AccountFreeMarginCheck(Symbol(),OP_SELL,lot),2);

lot - 주문량을 나타내는 변수

https://www.mql5.com/ru/search

... 글쎄, Igor는 서두르고 있습니다 ... :)

나는 손가락을 clave에 움직일 시간이 없었고 이미 구독을 취소했습니다 ... :)

 
모두 감사합니다!
 

여기요!

표시줄 과 가격의 교차점을 기억하는 방법을 코드나 분기에 알려주십시오. 어디선가 본 것 같은데 못찾겠네요. 미리 감사드립니다.

하지만 다음과 같은 것에 더 관심이 있습니다.

 int start()

  { 

 double LineX = iCustom ( "EURUSD" , Period_H1, "Indicator" , 0 , 0 );

 double lineY = iCustom ( "EURUSD" , Period_H1, "Indicator" , 1 , 0 );

double priceA = Ask;

double priceB = Bid;

double intersectionX = (LineX == priceA) ;

double intersectionY = (LineY == priceB) ;

// а так же еще определить, какое пересечение последнее, а какое предпоследние 

// intersectionX = последнее пересечение и на оборот
// intersectionY = предпоследние пересечение и на оборот

// то есть я понимаю логику, а  вот связать в коде не могу.
 
//произошло intersectionX,   то intersectionFirst = intersectionX; intersectionSecond = intersectionY;

// произошло intersectionY, то intersectionFirst = intersectionY; intersectionSecond = intersectionX;


 }
 
belck :

여기요!

표시줄과 가격의 교차점을 기억하는 방법을 코드나 분기에 알려주십시오. 어디선가 본 것 같은데 못찾겠네요. 미리 감사드립니다.

하지만 다음과 같은 것에 더 관심이 있습니다.


모든 교차점은 가격(Ask/Bid)과 표시선 사이의 차이로 최적으로 고려됩니다.

if (Ask-iCustom ("EURUSD", Period_H1, "Indicator",0,0) > 0) Comment("가격이 지표 위에 있습니다"); else Comment("가격이 지표보다 낮습니다.");

이 값의 차이를 비교하면 올바른 비교를 위해 값을 정규화할 필요가 즉시 없어집니다.

글쎄요, 특히 귀하의 질문에 관해서는 - 지표 선을 넘는 가격은 마지막 계산에서 차이 Ask- -iCustom()이 0보다 작았다가 더 커지거나 그 반대가 된 순간입니다.

이 순간을 계산하는 방법은 자신의 비즈니스입니다. 이전 막대 또는 각 눈금에 따라 다를 수 있지만 다음은 조합입니다.

 double intersectionX = (LineX == priceA) ;

double intersectionY = (LineY == priceB) ;
원하는 결과를 얻는 것보다 더 빨리 이산 수학의 세계로 인도될 것입니다. 대괄호 안의 표현은 0 또는 1과 같으며, 이는 거짓과 참의 수치적 표현에 해당합니다.
 
IgorM :


모든 교차점은 가격(Ask/Bid)과 표시선 사이의 차이로 최적으로 고려됩니다.

if (Ask-iCustom ("EURUSD", Period_H1, "Indicator",0,0) > 0) Comment("가격이 지표 위에 있습니다"); else Comment("가격이 지표보다 낮습니다.");

이 값의 차이를 비교하면 올바른 비교를 위해 값을 정규화할 필요가 즉시 없어집니다.

글쎄요, 특히 귀하의 질문에 관해서는 - 지표 선을 넘는 가격은 마지막 계산에서 차이 Ask- -iCustom()이 0보다 작았다가 더 커지거나 그 반대가 된 순간입니다.

이 순간을 계산하는 방법은 자신의 비즈니스입니다. 이전 막대 또는 각 눈금에 따라 다를 수 있지만 다음은 조합입니다.

원하는 결과를 얻는 것보다 더 빨리 이산 수학의 세계로 인도될 것입니다. 대괄호 안의 표현은 0 또는 1과 같으며, 이는 거짓과 참의 수치적 표현에 해당합니다.

즉, 올바르게 이해하면 다음과 같이 할 수 있습니다.

 bool intersectionX = FALSE,
     intersectionY = FALSE;
int start()

  { 
if   (Ask- iCustom ( "EURUSD" , Period_H1, "Indicator" , 0 , 0 ) == 0 )  {
intersectionX = TRUE;
intersectionY = FALSE;
}
i f   ( iCustom ( "EURUSD" , Period_H1, "Indicator" , 1 , 0 )-Bid == 0 ) {
intersectionY = TRUE;
intersectionX = FALSE;
}
}
и я потом смогу intersectionY использовать только тогда когда оно TRUE, если FALSE, то такой код (intersectionY > Ask) не сработает, правильно я понимаю!?
사유: