적어도 setter 메소드에서는 이것이 정당화됩니다. 코드가 더 읽기 쉽고 간결해질 수 있으므로 이름이 지정된 매개변수를 얻을 수 있습니다.
ChartObject *hline=HLine::New(1.255).Color(clrGreen).Width(2).Selectable(true); // не надо помнить очерёдность параметров и можно писать в одну строку - цепочкой
// получается вот из подобного : class HLine:public ChartObject { public: HLine(double price); HLine *New(double _price) { return new HLine(_price); } // это чтобы не городить (new HLine(...)).Method1 HLine *Color(color _clr) { fgColor=_clr; return GetPointer(this); } // а это чтобы получались цепочки obj.Method1(..).Method2(..) };
// После этого в MQL4 будут компилироваться все библиотеки из MQL5\Include\Math#property strict#ifdef __MQL4__#include <Math\Alglib\bitconvert.mqh>
#define TEMP_MACROS(A) double A( double ) { return(0); }
TEMP_MACROS(MathLog1p)
TEMP_MACROS(MathExpm1)
TEMP_MACROS(MathArcsinh)
TEMP_MACROS(MathArccosh)
TEMP_MACROS(MathArctanh)
#undef TEMP_MACROS
#endif
미결 주문은 더 높은 수에서 분석해야 합니다. for(int nom=OrdersTotal()-1; nom>=0; nom--) 이것은 주문을 삭제할 때 특히 중요합니다. 그러나 반대의 경우 for(int nom=0; nom<OrdersTotal(); nom++) ? 먼저 인덱스가 0이고 번호가 0인 첫 번째 주문이 삭제됩니다. 그러면 인덱스는 1이 됩니다. 이때, 나머지 주문은 이동되고, 숫자가 1이었던 주문은, 제로 위치를 차지합니다. 이전 2번이 1번 자리를 차지했습니다. 그는 제거될 것입니다. 그러면 인덱스는 2가 됩니다. 그리고 처음에 있던 4번 순서는 삭제됩니다.... 따라서 처음에 짝수 자리를 차지한 주문은 삭제됩니다. 그리고 이상한 것들은 남아 있습니다. 이는 주문 및 번호에 대한 댓글에서 확인할 수 있습니다. 제거 옵션과 스크린샷을 모두 보여주는 스크립트를 첨부합니다. 20개의 보류 주문이 생성됨
적어도 setter 메소드에서는 이것이 정당화됩니다. 코드가 더 읽기 쉽고 간결해질 수 있으므로 이름이 지정된 매개변수를 얻을 수 있습니다.
ChartObject *hline=HLine::New(1.255).Color(clrGreen).Width(2).Selectable(true); // не надо помнить очерёдность параметров и можно писать в одну строку - цепочкой
// получается вот из подобного :
class HLine:public ChartObject {
public:
HLine(double price);
HLine *New(double _price) { return new HLine(_price); } // это чтобы не городить (new HLine(...)).Method1
HLine *Color(color _clr) { fgColor=_clr; return GetPointer(this); } // а это чтобы получались цепочки obj.Method1(..).Method2(..)
};
반환 유형에 의한 함수의 자격은 약간 간섭합니다.
메서드에서 GetPointer(this)를 자유롭게 반환하십시오.
따라서 & 이것은 더 간결합니다.
자, 먼저 시작하겠습니다.
주문을 마감하기 위해 주문 유형 과 이 유형에 해당하는 가격을 정의할 필요가 없습니다. OrderClosePrice() 가격으로 닫기를 작성하는 것으로 충분합니다.
void OnStart ()
{
int i, total = OrdersTotal ()- 1 ;
for (i = total; i >= 0 ; i--)
{
if ( OrderType () < OP_SELLSTOP )
{
if (! OrderClose ( OrderTicket (), OrderLots (), OrderClosePrice (), 100 ))
printf ( "***********" );
}
}
} /********************************************************************/
시원한! ) 감사해요.
예를 들어 판단하면 OrderSelect()가 필요하지 않습니까?
시원한! ) 감사해요.
예를 들어 판단하면 OrderSelect()가 필요하지 않습니까?
시원한! ) 감사해요.
필요합니다. 나는 Alexey가 공원을 통과하도록했습니다 ...
그래... 정말 망했어.
그러나 그 전에는 이러한 주제를 만나지 않았습니다.
따라서 해당 OrderSelect 직후에만 OrderClosePrice를 사용할 수 있습니다. 왜냐하면 OrderSelect는 Order(const) 함수에 대한 데이터를 한 번 복사하고 동일한 RefreshRates는 업데이트할 수 없습니다.
저것들. 예를 들어 OrderClosePrice로 닫을 수 없는 경우 다음 시도 전에 OrderSelect를 다시 만들어야 합니다(RefreshRates는 필요하지 않음).
위협 이것은 이미 2005년에 나온 주제입니다! 다음은 개발자의 자세한 주장입니다.
미결 주문은 더 높은 수에서 분석해야 합니다. for(int nom=OrdersTotal()-1; nom>=0; nom--)
20개의 보류 주문이 생성됨
이것은 주문을 삭제할 때 특히 중요합니다.
그러나 반대의 경우 for(int nom=0; nom<OrdersTotal(); nom++) ?
먼저 인덱스가 0이고 번호가 0인 첫 번째 주문이 삭제됩니다.
그러면 인덱스는 1이 됩니다. 이때, 나머지 주문은 이동되고, 숫자가 1이었던 주문은,
제로 위치를 차지합니다. 이전 2번이 1번 자리를 차지했습니다. 그는 제거될 것입니다.
그러면 인덱스는 2가 됩니다. 그리고 처음에 있던 4번 순서는 삭제됩니다....
따라서 처음에 짝수 자리를 차지한 주문은 삭제됩니다. 그리고 이상한 것들은 남아 있습니다. 이는 주문 및 번호에 대한 댓글에서 확인할 수 있습니다.
제거 옵션과 스크린샷을 모두 보여주는 스크립트를 첨부합니다.