에! 내가 뭔가 있어! 그러나 new에서는 작동하지 않습니다. 코드에 내가 필요한 것의 예가 있습니다. 누군가 어떤 방법을 알려줄 수 있습니까?
class a{
public :
virtualvoidPrint (){ Print ( "Print class a" );}
};
class b: public a{
public :
virtualvoidPrint (){ Print ( "Print class b" );}
};
class c: public a{
public :
virtualvoidPrint (){ Print ( "Print class c" );}
void Print2(){ Print ( "!Print2! class c" );}
};
void add(a *&arr[], bool var)
{
ArrayResize (arr, ArraySize (arr)+ 1 );
if (var)
arr[ ArraySize (arr)- 1 ] = new b;
else
arr[ ArraySize (arr)- 1 ] = new c;
}
voidOnStart ()
{
//---
a *arr[];
add(arr, true ); // На самом деле здесь я НЕ знаю, какой класс добавит функция add
add(arr, false ); // Это потомок класса а или сам класс а, исходный код которого я править не могу.for ( int i = 0 ; i < ArraySize (arr); i++)
{
// Вот тут то мне и надо узнать, что за класс там// шаблон вернет *а, как и объявлено. Но мне надо проверить - можно ли вызвать функцию, которая есть только в сif (i == 1 ) // Вот тут должна быть проверка на имя класса
{
c *tmp = arr[i];
tmp.Print2();
}
}
//---
}
위의 코드가 테스터에서는 작동하지 않는데 실시간으로 작동하는 이유를 누가 설명해주실 수 있나요!!? 왜 HistoryOrderGetInteger... 속성이 HistorySelect(0, TimeCurrent()) 이후에 테스터에서 사용할 수 없는지 특히 관심이 있습니다.
ps 흥미롭게도 테스터의 첫 번째 주문은 올바르게 처리되지만 나머지는 그렇지 않습니다. 그러나 HistroryOrderSelect(ticketOrder)의 주석을 해제하면 실시간으로 주문이 선택되지 않았다는 메시지가 표시되고 반대로 전략 테스터에서는 첫 번째 주문을 제외한 모든 것이 작동하기 시작합니다.
그리고 HistorySelect()에 문제가 있습니다. 나는 시장가 주문을 보내 스크립트로 포지션을 오픈하고, 거래가 열리면 스크립트가 런칭된 이후 히스토리에 있는 거래 수를 즉시 살펴보고 초당 10번 간격으로 확인합니다. 물론 하나의 거래여야 합니다. 스크립트는 다음과 같습니다.
voidOnStart ()
{
// время запуска скриптаdatetime dtStartTime = TimeCurrent ();
// структуры запросаMqlTradeRequest oRequest = { 0 };
MqlTradeResult oResult = { 0 };
// формируем запрос
oRequest.action = TRADE_ACTION_DEAL ;
oRequest.magic = 15 ;
oRequest.symbol = _Symbol ;
oRequest.volume = 0.1 ;
oRequest.type = ORDER_TYPE_BUY ;
oRequest.type_filling = ORDER_FILLING_FOK ;
oRequest.price = SymbolInfoDouble ( _Symbol , SYMBOL_ASK );
oRequest.deviation = 1000 ;
// шлём ордерbool bResult = OrderSend (oRequest, oResult);
// если позиция успешно открытаif (bResult == true && oResult.retcode == 10009 ) // если позиция открыта
{
for ( int i = 0 ; i < 10 ; i++)
{
// запрашиваем историю за время работы скриптаHistorySelect (dtStartTime, TimeCurrent ());
// количество сделок за время работы скрипта (должна быть одна)Print ( "Шаг: " , i, " Совершено сделок: " , HistoryDealsTotal ());
Sleep ( 1000 );
}
}
}
Alpha Forex의 결과는 다음과 같습니다.
거래는 실제로 이루어졌고 10초가 지나도 기록에 없습니다. 그것은 무엇입니까? 버그 MT? 글리치 알파? 내가 모르는 기능? Alpari의 경우 동일한 스크립트가 잘 작동합니다. 첫 번째(0) 단계에서 때때로 0을 건너뛰고(이는 이해할 수 있습니다. 기록이 아직 업데이트되지 않음) 다른 모든 단계는 1입니다. 하지만 10초 후, 왜 역사에 거래가 없는 것일까요?
그리고 HistorySelect()에 문제가 있습니다. 나는 시장가 주문을 보내 스크립트로 포지션을 오픈하고, 거래가 열리면 스크립트가 런칭된 이후 히스토리에 있는 거래 수를 즉시 살펴보고 초당 10번 간격으로 확인합니다. 물론 하나의 거래여야 합니다. 스크립트는 다음과 같습니다.
다음은 Alpha Broker의 결과입니다.
거래는 실제로 이루어졌고 10초가 지나도 기록에 없습니다. 그것은 무엇입니까? 버그 MT? 글리치 알파? 내가 모르는 기능? Alpari의 경우 동일한 스크립트가 잘 작동합니다. 첫 번째(0) 단계에서 때때로 0을 건너뛰고(이는 이해할 수 있습니다. 기록이 아직 업데이트되지 않음) 다른 모든 단계는 1입니다. 하지만 10초 후, 왜 역사에 거래가 없는 것일까요?
스트레인 스트링
날짜 시간 dtStartTime = TimeCurrent();
dtStartTime 과 TimeCurrent() 가 에 대한 시간 기준으로 동일한 숫자가 아닌 것이 확실합니까? 아마도 1초의 반올림은 완료된 거래를 dtStartTime 외부에 두는 것 같습니다.
안녕하세요. 초보 거래자가 임의의 이익실현을 설정할 수 있는 통화 쌍으로 잠금 주문을 열 수 있는 적합한 자동 거래 EA를 찾도록 도와주세요. 고맙습니다.
옵션으로: 유형 식별자를 반환하는 Type 메서드를 모두 선언합니다.
헉, 소스코드 수정이 가능했다면.. 다 단순화할 필요는 없겠죠. 그러나 여전히 - mql5에 클래스 이름이 있습니까?
헉, 소스코드 수정이 가능했다면.. 다 단순화할 필요는 없겠죠. 그러나 여전히 - mql5에 클래스 이름이 있습니까?
템플릿을 찾으십시오. 이 코드는 클래스 또는 기본 유형의 이름을 반환합니다.
#include <Trade\Trade.mqh>
//+----------------------------------------------- --------------------+
//| |
//+----------------------------------------------- --------------------+
무효의 시작 ()
{
//---
CTrade 무역;
이중 d_value=M_PI;
정수 i_value=INT_MAX;
인쇄 ( "d_value: type=" , GetTypeName(d_value), ", value=" , d_value);
인쇄 ( "i_value: type=" , GetTypeName(i_value), ", value=" , i_value);
인쇄 ( "trade: type=" ,GetTypeName(trade));
//---
}
//+----------------------------------------------- --------------------+
//| 유형을 문자열로 반환 |
//+----------------------------------------------- --------------------+
템플릿 < typename T>
문자열 GetTypeName( const T & t)
{
//--- 유형을 문자열로 반환
리턴 ( 유형명 (T));
//---
}
템플릿을 찾으십시오. 이 코드는 클래스 또는 기본 유형의 이름을 반환합니다.
#include <Trade\Trade.mqh>
//+----------------------------------------------- --------------------+
//| |
//+----------------------------------------------- --------------------+
무효의 시작 ()
{
//---
CTrade 무역;
이중 d_value=M_PI;
정수 i_value=INT_MAX;
인쇄 ( "d_value: type=" , GetTypeName(d_value), ", value=" , d_value);
인쇄 ( "i_value: type=" , GetTypeName(i_value), ", value=" , i_value);
인쇄 ( "trade: type=" ,GetTypeName(trade));
//---
}
//+----------------------------------------------- --------------------+
//| 유형을 문자열로 반환 |
//+----------------------------------------------- --------------------+
템플릿 < typename T>
문자열 GetTypeName( const T & t)
{
//--- 유형을 문자열로 반환
리턴 ( 유형명 (T));
//---
}
에! 내가 뭔가 있어! 그러나 new에서는 작동하지 않습니다. 코드에 내가 필요한 것의 예가 있습니다. 누군가 어떤 방법을 알려줄 수 있습니까?
에! 내가 뭔가 있어! 그러나 new에서는 작동하지 않습니다. 코드에 내가 필요한 것의 예가 있습니다. 누군가 어떤 방법을 알려줄 수 있습니까?
위의 코드가 테스터에서는 작동하지 않는데 실시간으로 작동하는 이유를 누가 설명해주실 수 있나요!!? 왜 HistoryOrderGetInteger... 속성이 HistorySelect(0, TimeCurrent()) 이후에 테스터에서 사용할 수 없는지 특히 관심이 있습니다.
전략 테스터의 스크린샷:
데모의 실시간 스크린샷:
ps 흥미롭게도 테스터의 첫 번째 주문은 올바르게 처리되지만 나머지는 그렇지 않습니다. 그러나 HistroryOrderSelect(ticketOrder)의 주석을 해제하면 실시간으로 주문이 선택되지 않았다는 메시지가 표시되고 반대로 전략 테스터에서는 첫 번째 주문을 제외한 모든 것이 작동하기 시작합니다.
그리고 HistorySelect()에 문제가 있습니다. 나는 시장가 주문을 보내 스크립트로 포지션을 오픈하고, 거래가 열리면 스크립트가 런칭된 이후 히스토리에 있는 거래 수를 즉시 살펴보고 초당 10번 간격으로 확인합니다. 물론 하나의 거래여야 합니다. 스크립트는 다음과 같습니다.
Alpha Forex의 결과는 다음과 같습니다.
거래는 실제로 이루어졌고 10초가 지나도 기록에 없습니다. 그것은 무엇입니까? 버그 MT? 글리치 알파? 내가 모르는 기능? Alpari의 경우 동일한 스크립트가 잘 작동합니다. 첫 번째(0) 단계에서 때때로 0을 건너뛰고(이는 이해할 수 있습니다. 기록이 아직 업데이트되지 않음) 다른 모든 단계는 1입니다. 하지만 10초 후, 왜 역사에 거래가 없는 것일까요?
그리고 HistorySelect()에 문제가 있습니다. 나는 시장가 주문을 보내 스크립트로 포지션을 오픈하고, 거래가 열리면 스크립트가 런칭된 이후 히스토리에 있는 거래 수를 즉시 살펴보고 초당 10번 간격으로 확인합니다. 물론 하나의 거래여야 합니다. 스크립트는 다음과 같습니다.
다음은 Alpha Broker의 결과입니다.
거래는 실제로 이루어졌고 10초가 지나도 기록에 없습니다. 그것은 무엇입니까? 버그 MT? 글리치 알파? 내가 모르는 기능? Alpari의 경우 동일한 스크립트가 잘 작동합니다. 첫 번째(0) 단계에서 때때로 0을 건너뛰고(이는 이해할 수 있습니다. 기록이 아직 업데이트되지 않음) 다른 모든 단계는 1입니다. 하지만 10초 후, 왜 역사에 거래가 없는 것일까요?
스트레인 스트링
날짜 시간 dtStartTime = TimeCurrent();
dtStartTime 과 TimeCurrent() 가 에 대한 시간 기준으로 동일한 숫자가 아닌 것이 확실합니까? 아마도 1초의 반올림은 완료된 거래를 dtStartTime 외부에 두는 것 같습니다.
스트레인 스트링
날짜 시간 dtStartTime = TimeCurrent();
dtStartTime 과 TimeCurrent() 가 에 대한 시간 기준으로 동일한 숫자가 아닌 것이 확실합니까? 아마도 1초의 반올림은 완료된 거래를 dtStartTime 외부에 두는 것 같습니다.
그리고 단 한 가지라도, MT는 이 순간에 역사를 말해야 하지 않겠습니까? 저것들. 경계 자체를 포함하여 지정된 경계 내에서 이야기를 제공하지 않습니까?
그러나 어쨌든 dtStartTime = TimeCurrent() - 1 및 dtStartTime = TimeCurrent() - 10을 모두 작성해 보았습니다. 도움이 되지 않습니다.