제로 바에 열린 포즈 가 있는지 확인하는 함수를 작성하는 방법(시간 프레임을 선택하는 것이 바람직합니다. OpenPosLastBar(string sym="", int tf=0, int op=-1, int mn =-1), 또는 이 함수 내가 이해하는 한 현재로서는 열린 자세일 뿐이고 열려 있었다가 이미 닫혀 있었다면 -1을 반환할 것입니다.
//+----------------------------------------------- ------------------------------+ //| 마지막 위치 열린 막대의 번호 또는 -1을 반환합니다. | //| 옵션: | //| sym - 기기 이름("" - 현재 기호) | //| tf - 기간( 0 - 현재 기간) | //| 연산 - 연산(-1 - 임의의 위치) | //| mn - MagicNumber(-1 - 모든 마법) | //+----------------------------------------------- ------------------------------+ 정수 NumberOfBarLastPos(문자열 sym="", 정수 tf=0, 정수 연산=-1, 정수 mn=-1) { 날짜 시간 oot; 정수 i, k=OrdersTotal();
drknn>> : Нужно два цикла. В первом проходим по истории ордеров, во втором - по текущим ордерам. В обоих случаях если время открытия ордера больше или равно Time[0], то ордер был открыт на текущей свече. Это справедливо для всех таймфреймов.
Спадибо, что аткликнулся. А можно попросить это в коде
다음은 히스토리 패스의 예입니다.
//=========== SchSellHist() ===============================// Функция возвращает количество Sell-ордеров, лежащих в истории сегодняшних торгов// SchSell - счётчик Sell ордеров//-----------------------------------------------------------int SchSellHist( int MAGIC){
string SMB= Symbol ();
int SchSell= 0 ;
int i;
for (i=OrdersHistoryTotal()- 1 ;i>= 0 ;i--){
if (! OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) { WriteError(i);}
else {
if (OrderSymbol()!=SMB || OrderMagicNumber()!=MAGIC){ continue ;}
if (OrderType()==OP_SELL){
if (OrderOpenTime()>=Time_D0){ // сегодняшний ордер
SchSell++;
}
}
}
}
return (SchSell);
}
//==================================================================================================
또는 현재 막대에서 포즈가 열렸는지 확인하는 함수가 있습니다( OrdersTotal() 및 OrdersHistoryTotal() 로 확인). 유형 주문이 열린 경우 true를 반환합니다.
bool CheckExists( int Type)
{
bool Result = True;
for ( int i = 0 ; i < OrdersTotal (); i++)
if ( OrderSelect (i, SELECT_BY_POS))
if (OrderType() == Type && OrderMagicNumber() == Magic && OrderSymbol() == Symbol ())
if (OrderOpenTime() >= Time[ 0 ])
Result = False;
for (i = 0 ; i < OrdersHistoryTotal(); i++)
{
if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY))
if (OrderType() == Type && OrderOpenTime() >= Time[ 0 ]
&& OrderMagicNumber() == Magic && OrderSymbol() == Symbol ())
Result = False;
}
return (Result);
}
초보자의 또 다른 질문입니다.
Expert Advisor에서 여러 사용자 정의 기능을 사용합니다. 어떻게 이러한 기능을 라이브러리로 결합하고 EA 자체의 본문에서 호출할 수 있습니까?
그 문제에 대한 언어의 구문에 익숙하지 않습니다.
설명서 또는 자습서 섹션을 가리키십시오. 거기에 비슷한 것을 찾지 못했습니다.
https://book.mql4.com/ru/build/structure
https://www.mql5.com/ru/articles/1462
+ 힙에 ... https://book.mql4.com/en/appendix/examples
제로 바에 열린 포즈 가 있는지 확인하는 함수를 작성하는 방법(시간 프레임을 선택하는 것이 바람직합니다. OpenPosLastBar(string sym="", int tf=0, int op=-1, int mn =-1), 또는 이 함수 내가 이해하는 한 현재로서는 열린 자세일 뿐이고 열려 있었다가 이미 닫혀 있었다면 -1을 반환할 것입니다.
//+----------------------------------------------- ------------------------------+
//| 마지막 위치 열린 막대의 번호 또는 -1을 반환합니다. |
//| 옵션: |
//| sym - 기기 이름("" - 현재 기호) |
//| tf - 기간( 0 - 현재 기간) |
//| 연산 - 연산(-1 - 임의의 위치) |
//| mn - MagicNumber(-1 - 모든 마법) |
//+----------------------------------------------- ------------------------------+
정수 NumberOfBarLastPos(문자열 sym="", 정수 tf=0, 정수 연산=-1, 정수 mn=-1)
{
날짜 시간 oot;
정수 i, k=OrdersTotal();
if(sym="")
기호 = 기호();
for(i=0; ik; i++)
{
if( 주문 선택 (i, SELECT_BY_POS, MODE_TRADES ))
{
if(OrderSymbol()==sym)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(op0 || OrderType()==op)
{
if(mn0 || OrderMagicNumber()==mn)
{
if(ootOrderOpenTime()) oot=OrderOpenTime();
}
}
}
}
}
}
return(iBarShift(sym, tf, oot, True));
}
//+----------------------------------------------- ------------------------------+
Нужно два цикла. В первом проходим по истории ордеров, во втором - по текущим ордерам. В обоих случаях если время открытия ордера больше или равно Time[0], то ордер был открыт на текущей свече. Это справедливо для всех таймфреймов.
문의해 주셔서 감사합니다. 이것을 코드로 요청할 수 있습니까?
Спадибо, что аткликнулся. А можно попросить это в коде
다음은 히스토리 패스의 예입니다.
특히 알고리즘과 완성된 예제가 눈앞에 있기 때문에 코드를 직접 작성해 보십시오.
ObjectDelete(a_name_0);
ObjectCreate(a_name_0, OBJ_ARROW , a_window_8, a_datetime_12, a_price_20);
ObjectSet(a_name_0, OBJPROP_ARROWCODE, ai_28);
ObjectSet(a_name_0, OBJPROP_COLOR, a_color_32);
ObjectSet(a_name_0, OBJPROP_WIDTH, a_width_36);
}
무효 _setabuy(문자열 as_0) {
g_str_concat_356 = StringConcatenate(as_0, gi_120);
seta(g_str_concat_356, 0, TimeCurrent(), 입찰가 + 15.0 * 포인트, SYMBOL_ARROWUP, 파란색, 2);
gi_120++;
}
무효 _setasell(문자열 as_0) {
g_str_concat_356 = StringConcatenate(as_0, gi_120);
seta(g_str_concat_356, 0, TimeCurrent(), 입찰가 - 15.0 * 포인트, SYMBOL_ARROWDOWN, 빨간색, 2);
gi_120++;
}
다음은 히스토리 패스의 예입니다.
특히 알고리즘과 완성된 예제가 눈앞에 있기 때문에 코드를 직접 작성해 보십시오.
고맙습니다. 노력하겠습니다.
다음은 히스토리 패스의 예입니다.
특히 알고리즘과 완성된 예제가 눈앞에 있기 때문에 코드를 직접 작성해 보십시오.
또는 현재 막대에서 포즈가 열렸는지 확인하는 함수가 있습니다( OrdersTotal() 및 OrdersHistoryTotal() 로 확인). 유형 주문이 열린 경우 true를 반환합니다.
조건을 구현하는 방법을 알려주세요.-
If( 보류 중인 주문 이 있음 ) 그러면 우리는 이것을 하고 ;