} //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ voidOnTick() { //--- TimeToStruct(TimeCurrent(),time); if(time.day_of_week!=dayofweek)return; // выйдем из OnTick() если текущий день не равен установленному дню
// тут остальной код советника. } //+------------------------------------------------------------------+
MqlDateTime time; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ intOnInit() { //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ voidOnTick() { //-- if(TradeAllow()) { ClosePos(); // Только закрытие } else { ClosePos(); // Закрытие OpenPos(); // Открытие Function() // Ещё что-то }
//- } //+------------------------------------------------------------------+ //| Функция закрытия | //+------------------------------------------------------------------+ void ClosePos() { // код }
//+------------------------------------------------------------------+ //| Функция открытия | //+------------------------------------------------------------------+ void OpenPos() { // код }
EAを使っているのですが、取引する日としない日を選択できるようにしたいのですが。
月 - 偽
火 - 本当
Cp- ...
どのように実装すればよいか、アドバイスをお願いします。
EAを使っているのですが、取引する日としない日を選択できるようにしたいのですが。
月 - 偽
火 - 本当
Cp- ...
どのように実装すればよいか、アドバイスをお願いします。
曜日
9.1.3 サーバー時刻の連番 最後に確認されたサーバー時刻の曜日の 連番を返します。
intDayOfWeek()。
戻り値
曜日の連番(日曜日-0,1,2,3,4,5,6) です。
備考
テスト中は、最後に確認されたサーバーの時刻をシミュレートします。
例
// 週末は営業していません。
if(DayOfWeek()==0 ||DayOfWeek()==6)return(0);
曜日
9.1.3 サーバー時刻の曜日 番号 サーバー時刻が最後に判明した曜日のシーケンス番号を返す。
ありがとうございます、より理解できました。
外部パラメータで取引日を選択する実装が今ひとつわからない。具体的には、同じExpert Advisorで、月曜日はある取引ペアで取引し、別の取引ペアでは取引しないようにしたいのです。
externで書いて、condition(if...else)で実装するには?
曜日
9.1.3 サーバー時刻の曜日 番号 サーバー時刻が最後に判明した曜日のシーケンス番号を返す。
ありがとうございます、より理解できました。
外部パラメータで取引日を選択する実装が今ひとつわからない。具体的には、同じExpert Advisorで、月曜日はある取引ペアで取引し、別の取引ペアでは取引しないようにしたいのです。
externで書いて、condition(if...else)で実装するには?
ここでは、月曜日だけ取引できる簡単な例をご紹介します。このコードはMT4とMT5で動作します。
//| test08.mq4 |
//| Sergey Gritsay |
//| https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link "https://www.mql5.com/ru/users/sergey1294"
#property version "1.00"
#property strict
input ENUM_DAY_OF_WEEK dayofweek=MONDAY;
MqlDateTime time;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
TimeToStruct(TimeCurrent(),time);
if(time.day_of_week!=dayofweek)return; // выйдем из OnTick() если текущий день не равен установленному дню
// тут остальной код советника.
}
//+------------------------------------------------------------------+
...
曜日
9.1.3 サーバー時刻の曜日 番号 サーバー時刻が最後に判明した曜日のシーケンス番号を返す。
ありがとうございます、より理解できました。
外部パラメータで取引日を選択する実装が今ひとつわからない。具体的には、同じExpert Advisorで、月曜日はある取引ペアで取引し、別の取引ペアでは取引しないようにしたいのです。
externで記述して、条件(if...else)で実装するには?
ENUM_DAY_OF_WEEK 列挙型を使用する。
ページの一番最後に
void OnTick()
{
//---
TimeToStruct(TimeCurrent(),time);
if(time.day_of_week!=dayofweek)return;// 現在の曜日と設定した曜日が等しくない場合はOnTick()を終了
// 残りのEAコードはこちら です。
}
//+------------------------------------------------------------------+
...
ありがとうございました。
さて、ここで問題になるのは、それぞれのペアで「働く」日数が異なるという点です。
おそらく5つの変数を入力する必要があります。dayofweek1,dayofweek2,...?
しかし、やはり取引日が3日ある場合、残りの2つの変数に何を入力すればいいのでしょうか?
...
ありがとうございました。
しかし、ここで、各ペアの「稼働日数」が異なることに対処する必要がある。
おそらく5つの変数を入力する必要があります。dayofweek1,dayofweek2,...?
しかし、やはり取引日が3日ある場合、残りの2つの変数に何を入力すればいいのでしょうか!
このようにやってみることもあります。
#property strict
//-
enum YesNo {
_no = 0, // NoTrade
_yes = 1 // Trade
};
//-
sinput YesNo day1 = _yes; // Пн
sinput YesNo day2 = _yes; // Вт
sinput YesNo day3 = _yes; // Ср
sinput YesNo day4 = _no; // Чт
sinput YesNo day5 = _yes; // Пт
MqlDateTime time;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//--
// здесь какой-то код, например закрытие
...
// проверка запрета на торговлюif(TradeAllow()) return;
// далее код
}
//+------------------------------------------------------------------+
//| Разрешение на торговлю по дням |
//+------------------------------------------------------------------+
bool TradeAllow() {
TimeToStruct(TimeCurrent(),time);
switch(time.day_of_week) {
case 1 : return(!day1);
case 2 : return(!day2);
case 3 : return(!day3);
case 4 : return(!day4);
case 5 : return(!day5);
default: return( true);
}
}
木曜日の取引は禁止されています。
もう少し美しくしてもいい、すべては作業次第だ。
#property strict
//-
enum YesNo {
_no = 0, // No trade
_yes = 1 // Trade
};
//-
sinput YesNo day1 = _yes; // Пн
sinput YesNo day2 = _yes; // Вт
sinput YesNo day3 = _yes; // Ср
sinput YesNo day4 = _no; // Чт
sinput YesNo day5 = _yes; // Пт
MqlDateTime time;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//--
if(TradeAllow()) {
ClosePos(); // Только закрытие
} else {
ClosePos(); // Закрытие
OpenPos(); // Открытие
Function() // Ещё что-то
}
//-
}
//+------------------------------------------------------------------+
//| Функция закрытия |
//+------------------------------------------------------------------+
void ClosePos()
{
// код
}
//+------------------------------------------------------------------+
//| Функция открытия |
//+------------------------------------------------------------------+
void OpenPos()
{
// код
}
//+------------------------------------------------------------------+
//| Разрешение на торговлю по дням |
//+------------------------------------------------------------------+
bool TradeAllow() {
TimeToStruct(TimeCurrent(),time);
switch(time.day_of_week) {
case 1 : return(!day1);
case 2 : return(!day2);
case 3 : return(!day3);
case 4 : return(!day4);
case 5 : return(!day5);
default: return( true);
}
}
//+------------------------------------------------------------------+
みなさん、こんにちは。私はMT4の取引でclusterdelta.comのデルタインジケーターを使用しています。インジケータの値がある閾値に達すると、アラートなどの音が出るようにできるフリーランサーが必要です。この件について、誰に連絡すればよいか教えてください。