각 함수 앞에 templ(T1) 을 기록하고 변수나 필요한 인수를 수락한다는 의미입니까? 그리고 왜 templ(T) 가 선언되고 templ(T1)이 호출 됩니까? 각 함수 앞에 숫자를 추가해야 합니까( templ(T1)templ(T2)templ(T3)) 모든 곳에 templ(T1)을 작성해야 합니까? 그리고 여러 매개변수가template<typenameT> 에 채워진 다면 이template<typenameT,typenameP,typenameQ> -templ(T,P,Q)와 같이 어떻게 될까요?
예, 입력은 여전히 각 기능 전에 이루어지며, 여기서 일반 기능을 기능 템플릿으로 전환해야 합니다. 이 항목이 이제 눈에 띄게 짧아졌습니다. T1은 그 이름(a)이 나타내는 변수에 저장되어 있는 어떤 종류의 데이터 를 나타내는 이름이다. 숫자를 추가할 필요는 없습니다. 모든 곳에서 동일한 이름을 사용할 수 있습니다. 번호가 없는 동일한 T라도 마찬가지입니다. templ은 호출되지 않지만 #define에 작성된 내용으로 자동 대체됩니다. 이것은 한 텍스트를 다른 텍스트로 간단하게 대체하지만 함수처럼 대괄호 안에 입력 매개변수를 작성할 수 있습니다.
#define templ(T) template < typename T> // один входной параметр именуемый буквой "T" т. е. "T" это просто имя.
templ(T1) T1 Funct(T1 a) { return a;} // функция вернёт тот же тип, что и будет передан при вызове это функции
컴파일 타임에 templ(T1) 표현식은 template<typename T1>으로 대체되며 이는 다음과 같습니다.
template < typename T1>
T1 Funct(T1 a) { return a;}
Директива #define подставляет expression вместо всех последующих найденных вхождений identifier в исходном тексте. identifier заменяется только в том случае, если он представляет собой отдельный токен. identifier не заменяется, если он является частью комментария, частью строки, или частью другого более длинного идентификатора. expression...
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart ()
{
// здесь пофиг какой символ и какая позиция ... последняя позиция и всеint ClosePos = SecondsAfterCloseLastPos();
// здесь по тек. символу и пофиг какая позиция // int ClosePos = SecondsAfterCloseLastPos(Symbol()); // здесь по тек. символу и OP_BUY позиция // int ClosePos = SecondsAfterCloseLastPos(Symbol(),OP_BUY); // здесь по тек. символу , OP_BUY позиция , и магик 5 // int ClosePos = SecondsAfterCloseLastPos(Symbol(),OP_BUY,5);// продажи, вместо OP_BUY прописываем OP_SELL.if (ClosePos > 3600 || ClosePos == 0 ) { /*можно открывать*/ }
}
//+------------------------------------------------------------------+//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает количество секунд после закрытия последней позиций. |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//+----------------------------------------------------------------------------+int SecondsAfterCloseLastPos( string sy= "" , int op=- 1 , int mn=- 1 )
{
datetime t= 0 ;
int i,k= OrdersHistoryTotal ();
if (sy== "0" ) sy= Symbol ();
for (i= 0 ; i<k; i++)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_HISTORY ))
{
if ( OrderSymbol ()==sy || sy== "" )
{
if ( OrderType ()== OP_BUY || OrderType ()== OP_SELL )
{
if (op< 0 || OrderType ()==op)
{
if (mn< 0 || OrderMagicNumber ()==mn)
{
if (t< OrderCloseTime ()) t= OrderCloseTime ();
}
}
}
}
}
}
int CloseTime;
if (t== 0 )
CloseTime= 0 ;
else
CloseTime = int ( TimeCurrent ()-t);
return (CloseTime);
}
//+----------------------------------------------------------------------------+
각 함수 앞에 templ(T1) 을 기록하고 변수나 필요한 인수를 수락한다는 의미입니까? 그리고 왜 templ(T) 가 선언되고 templ(T1)이 호출 됩니까? 각 함수 앞에 숫자를 추가해야 합니까( templ(T1) templ(T2) templ(T3) ) 모든 곳에 templ(T1)을 작성해야 합니까? 그리고 여러 매개변수가 template< typename T> 에 채워진 다면 이 template< typename T, typename P, typename Q > - templ(T,P,Q)와 같이 어떻게 될까요?
예, 입력은 여전히 각 기능 전에 이루어지며, 여기서 일반 기능을 기능 템플릿으로 전환해야 합니다. 이 항목이 이제 눈에 띄게 짧아졌습니다.
T1은 그 이름(a)이 나타내는 변수에 저장되어 있는 어떤 종류의 데이터 를 나타내는 이름이다. 숫자를 추가할 필요는 없습니다. 모든 곳에서 동일한 이름을 사용할 수 있습니다. 번호가 없는 동일한 T라도 마찬가지입니다.
templ은 호출되지 않지만 #define에 작성된 내용으로 자동 대체됩니다. 이것은 한 텍스트를 다른 텍스트로 간단하게 대체하지만 함수처럼 대괄호 안에 입력 매개변수를 작성할 수 있습니다.
컴파일 타임에 templ(T1) 표현식은 template<typename T1>으로 대체되며 이는 다음과 같습니다.
여러 매개변수의 경우 예, 설명하는 방법을 정확히 추측했습니다.
분명합니다. 정보 감사합니다. 이미 실험해 보았고 편리합니다.
내가 알기로는 스위치를 통해 선택하고 거기에 이름을 입력해야합니다
코드가 int 값을 인쇄하지만 문자열을 선택해야 합니다.
문자열 상수 배열을 통해 표시기의 이름을 선택합니다. 내 예는 사용자가 선택할 때 레코드 번호를 제공하며 이 번호는 표시기의 텍스트 이름을 저장할 문자열 배열의 요소 번호(인덱스)가 될 수 있습니다.
불행히도 터미널이 없으므로 코드에서 예제를 보여주지 않겠지만 아이디어를 설명했다고 생각합니다.
추신:
문자열 상수 배열을 통해 표시기의 이름을 선택합니다. 내 예는 사용자가 선택할 때 레코드 번호를 제공하며 이 번호는 표시기의 텍스트 이름을 저장할 문자열 배열의 요소 번호(인덱스)가 될 수 있습니다.
불행히도 터미널이 없으므로 코드에서 예제를 보여주지 않겠지만 아이디어를 설명했다고 생각합니다.
추신:
덕분에 해보니 꽤 편하네요.
하지만 최종 버전은 폭탄일 뿐입니다. 터미널에 최소 20개 이상의 차트가 열려 있기 때문에 오랫동안 이것을 놓쳤습니다.
안녕 모두. 도와주세요, 제발. EA가 거래 를 종료한 후 n시간을 기다리기를 원합니다. 이 기능을 조정할 수도 있습니다. Mode_Trades를 Mode_History로 변경하는 것이 맞습니까? 감사해요
MODE_HISTORY - 물론 필요하지만 한 가지 더 있습니다. "종료 후" 텍스트와 주문 오픈 시간 코드
막대로 전환하지 않고 시간 t를 반환한 다음 다음과 같이 사용합니다.
MODE_HISTORY - 물론 필요하지만 한 가지 더 있습니다. "종료 후" 텍스트와 주문 오픈 시간 코드
막대로 전환하지 않고 시간 t를 반환한 다음 다음과 같이 사용합니다.
부엉이가 퍼스트 오더를 열지 않도록 Mode_History에서 수정했습니다. 솔루션에 대해 자세히 설명해 주시겠습니까? 감사해요
부엉이가 퍼스트 오더를 열지 않도록 Mode_History에서 수정했습니다. 솔루션에 대해 자세히 설명해 주시겠습니까? 감사해요
확인 해봐.
확인 해봐.
첫 번째 주문을 해결하는 방법은 무엇입니까?
첫 번째 주문을 해결하는 방법은 무엇입니까?
기능이 약간 변경되었음을 알려드립니다.