FOREXにおけるシンボル名の最大長 - ページ 11 1...456789101112 新しいコメント Taras Slobodyanik 2018.08.26 09:19 #101 prostotrader:うまくいかない。 同じEAを同じ(違う)シンボルで。文字列にすべてのインスタンスを追加します(ピリオド文字も追加 できます)。 Konstantin Nikitin 2018.08.26 09:19 #102 prostotrader:もし、各オーダーのユニークなマジックを違う方法で(松葉づえなしで)入手する方法をご存知の方がいらっしゃいましたら、byシェアしてください。 int magic = (int)TimeCurrent(); int magic = (int)TimeLocal(); オプションとして、頭打ちはない。 Taras Slobodyanik 2018.08.26 09:21 #103 prostotrader:時間、ありがとうございます、各EAに一意性を与え、ChartID()とEAへのパスをリンクする必要はありません。 ただし、端末のGlobal Variableに wizardを保存しておく必要があります。時間は一意ではありません - すべてのEAを有効にしてターミナルを再起動します - すべてが同じ時間になります) prostotrader 2018.08.26 09:22 #104 Konstantin Nikitin: オプションとして、頭打ちはない。もし、ユーザーが1秒間に2つ、3つのEAをキャストすることに成功したらどうでしょうか? prostotrader 2018.08.26 09:23 #105 Taras Slobodyanik:時間は一意ではありません - EAを有効にしてターミナルを再起動します - すべて同じ時間になります)はい、その通りです Konstantin Nikitin 2018.08.26 09:25 #106 prostotrader:もし、ユーザーが1秒間に2つ、3つのEAをキャストすることに成功したらどうでしょうか?まあ、実際、これはありえないことなんですけどね。Taras Slobodyanik: 時間は一意ではありません - エキスパートアドバイザーを有効にしてターミナルを再起動します - すべて同じ時間になります)しかし、ここでもう一曲。EA を再起動する場合、Expert Advisor は、以前に開いたポジションを 維持するために、その魔術師と協力し続ける必要があります。だから、記憶することは問題ないでしょう。 prostotrader 2018.08.26 09:36 #107 Konstantin Nikitin:まあ、実際にはあまりあり得ないことなんですけどね。これは違う話です。再起動する場合、Expert Advisorは、以前に開いたポジションを 維持するために、そのマジックを継続する必要があります。だから、覚えていても損はない。FOREX(変更なしのFORTS)は、このバリアントで止めました。 もし、もっと良いものを思いついた方がいらっしゃいましたら、ぜひお願いします。 //+------------------------------------------------------------------+ //| AutoMagic.mqh | //| Copyright 2017-2018 prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ //version "1.01 //#define FORTS //--- #include ".\..\include\crc64.mqh" //--- struct SYMBOL_MAGIC { long ch_id; ulong magic; }; SYMBOL_MAGIC symb_magic; //-------------------------------------------------------------------+ // Split string function | //+------------------------------------------------------------------+ string SplitString(const string a_str,ulong &a_month,ulong &a_year) { int str_size=StringLen(a_str); int str_tire=StringFind(a_str, "-"); int str_tochka=StringFind(a_str, ".", str_tire); if((str_tire>0) && (str_tochka>0) &&(str_size > 0)) { a_month= ulong(StringToInteger(StringSubstr(a_str,str_tire+1,str_tochka-str_tire-1))); a_year = ulong(StringToInteger(StringSubstr(a_str,str_tochka+1,str_size-str_tochka-1))); if((a_month > 0) && (a_year > 0)) return(StringSubstr(a_str, 0, str_tire)); } return(""); } //-------------------------------------------------------------------+ // Get Magic function | //+------------------------------------------------------------------+ ulong GetMagic(const string a_symbol) { //--- Get ChartID symb_magic.ch_id = ChartID(); if(SymbolSelect(Symbol(), true) == false) { Print(__FUNCTION__, ": Нет такого символа!"); return(0); } if(symb_magic.ch_id != 0) { #ifdef FORTS ulong month = 0; ulong year = 0; string new_str = SplitString(a_symbol,month,year); if(StringLen(new_str)>0) { symb_magic.magic = 0; uchar char_array[]; int result=StringToCharArray(new_str,char_array,0,WHOLE_ARRAY,CP_ACP); if(result>0) { ulong value; for(int i = 0; i < result - 1; i++) { value=ulong(char_array[i]); value<<=(56 -(i*8)); symb_magic.magic += value; } month<<=24; symb_magic.magic += month; year<<=16; symb_magic.magic += year; return(symb_magic.magic); } } #else uchar Bytes[]; ulong result = crc64(0, Bytes, StringToCharArray(string(symb_magic.ch_id), Bytes, 0)); if(result > 0) { symb_magic.magic = result<<12; if(ulong(GlobalVariableSet(Symbol() + ":" + DoubleToString(double(symb_magic.magic), 0), double(symb_magic.magic))) > 0) { Print("Terminal Global variable created."); } return(symb_magic.magic); } #endif } return(0); } //-------------------------------------------------------------------+ // Is my magic function | //+------------------------------------------------------------------+ bool IsMyMagic(const ulong m_magic, const long chart_id) { if(symb_magic.ch_id == chart_id) { ulong stored_magic=symb_magic.magic; ulong in_magic = m_magic; #ifdef FORTS stored_magic>>=16; in_magic>>=16; if(in_magic == stored_magic) return(true); #else stored_magic>>=12; in_magic>>=12; if(m_magic == symb_magic.magic) return(true); #endif } return(false); } //-------------------------------------------------------------------+ // Get stired magic function | //+------------------------------------------------------------------+ ulong GetStoredMagic(const long cha_id) { if(cha_id == symb_magic.ch_id) { return(symb_magic.magic); } return(0); } //+------------------------------------------------------------------+ エキスパートアドバイザーは //+------------------------------------------------------------------+ //| Magic_test.mq5 | //| Copyright 2018 prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2018 prostotrader" #property link "https://www.mql5.com" #property version "1.00" #include "AutoMagic.mqh" ulong a_magic; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { a_magic = GetMagic(Symbol()); if(a_magic != 0) { if(IsMyMagic(a_magic, ChartID()) == true) { Print("Magic = ", a_magic); } } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { string a_name = Symbol() + ":" + DoubleToString(double(a_magic), 0); if(GlobalVariableCheck(a_name) == true) { GlobalVariableDel(a_name); Print("Terminal Global variable deleted."); } } Taras Slobodyanik 2018.08.26 09:42 #108 ChartID() も再起動時に変更され、EAが同じラベルで動作し続けることはできません(保存しない限り)。 パラメータ(入力)およびシンボルにおいて、EAの各コピーが一意であること。 この場合、ラベルを保存する必要はなく、同じExpert Advisor-parametersに同じものが適用されます。 Konstantin Nikitin 2018.08.26 09:42 #109 prostotrader:FOREXではこのバージョンに落ち着きました(FORTSは変更なし)。もし誰かがもっといいものを思いついたら、歓迎しますよ。各ポジションに個性的なマジシャンが出題されました。今、ふと思ったんです。最後のチケットを取って、マジコンにセットする方が簡単です。コピー機でも同様に応用しました。サーバー部からポジションのチケットを取り出し、クライアントでマジシャンが開いたポジションに 割り当てました。また、余分な努力なしに動作します。 prostotrader 2018.08.26 09:51 #110 Konstantin Nikitin:質問は、各ポジションの個性的なマジシャンに行った。今、私はこう思っています。最後のチケットを取ってマジコンにするのが簡単です。コピー機で似たようなのを使ってました。サーバーからポジションのチケットを取り出し、クライアントでマジシャンが開いたポジション に割り当てました。また、余計な手間をかけずに動作します。注文ごとに自分のマスターを用意しなければならないのです。 おっしゃるとおり、リロードするとChartIDが変わるので、ターミナルのGlobal Variablesに何も保存する必要はありません。 //+------------------------------------------------------------------+ //| AutoMagic.mqh | //| Copyright 2017-2018 prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ //version "1.01 //#define FORTS //--- #include ".\..\include\crc64.mqh" //--- struct SYMBOL_MAGIC { long ch_id; ulong magic; }; SYMBOL_MAGIC symb_magic; //-------------------------------------------------------------------+ // Split string function | //+------------------------------------------------------------------+ string SplitString(const string a_str,ulong &a_month,ulong &a_year) { int str_size=StringLen(a_str); int str_tire=StringFind(a_str, "-"); int str_tochka=StringFind(a_str, ".", str_tire); if((str_tire>0) && (str_tochka>0) &&(str_size > 0)) { a_month= ulong(StringToInteger(StringSubstr(a_str,str_tire+1,str_tochka-str_tire-1))); a_year = ulong(StringToInteger(StringSubstr(a_str,str_tochka+1,str_size-str_tochka-1))); if((a_month > 0) && (a_year > 0)) return(StringSubstr(a_str, 0, str_tire)); } return(""); } //-------------------------------------------------------------------+ // Get Magic function | //+------------------------------------------------------------------+ ulong GetMagic(const string a_symbol) { //--- Get ChartID symb_magic.ch_id = ChartID(); if(SymbolSelect(Symbol(), true) == false) { Print(__FUNCTION__, ": Нет такого символа!"); return(0); } if(symb_magic.ch_id != 0) { #ifdef FORTS ulong month = 0; ulong year = 0; string new_str = SplitString(a_symbol,month,year); if(StringLen(new_str)>0) { symb_magic.magic = 0; uchar char_array[]; int result=StringToCharArray(new_str,char_array,0,WHOLE_ARRAY,CP_ACP); if(result>0) { ulong value; for(int i = 0; i < result - 1; i++) { value=ulong(char_array[i]); value<<=(56 -(i*8)); symb_magic.magic += value; } month<<=24; symb_magic.magic += month; year<<=16; symb_magic.magic += year; return(symb_magic.magic); } } #else uchar Bytes[]; ulong result = crc64(0, Bytes, StringToCharArray(string(symb_magic.ch_id), Bytes, 0)); if(result > 0) { symb_magic.magic = result<<12; return(symb_magic.magic); } #endif } return(0); } //-------------------------------------------------------------------+ // Is my magic function | //+------------------------------------------------------------------+ bool IsMyMagic(const ulong m_magic, const long chart_id) { if(symb_magic.ch_id == chart_id) { ulong stored_magic=symb_magic.magic; ulong in_magic = m_magic; #ifdef FORTS stored_magic>>=16; in_magic>>=16; if(in_magic == stored_magic) return(true); #else stored_magic>>=12; in_magic>>=12; if(m_magic == symb_magic.magic) return(true); #endif } return(false); } //-------------------------------------------------------------------+ // Get stщred magic function | //+------------------------------------------------------------------+ ulong GetStoredMagic(const long cha_id) { if(cha_id == symb_magic.ch_id) { return(symb_magic.magic); } return(0); } //+------------------------------------------------------------------+ #property copyright "Copyright 2018 prostotrader" #property link "https://www.mql5.com" #property version "1.00" #include "AutoMagic.mqh" ulong a_magic; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { a_magic = GetMagic(Symbol()); if(a_magic != 0) { if(IsMyMagic(a_magic, ChartID()) == true) { Print("Magic = ", a_magic); } } //--- return(INIT_SUCCEEDED); } 1...456789101112 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
うまくいかない。
同じEAを同じ(違う)シンボルで。
文字列にすべてのインスタンスを追加します(ピリオド文字も追加 できます)。
もし、各オーダーのユニークなマジックを違う方法で(松葉づえなしで)入手する方法をご存知の方がいらっしゃいましたら、by
シェアしてください。
時間、ありがとうございます、各EAに一意性を与え、ChartID()とEAへのパスをリンクする必要はありません。
ただし、端末のGlobal Variableに wizardを保存しておく必要があります。
時間は一意ではありません - すべてのEAを有効にしてターミナルを再起動します - すべてが同じ時間になります)
オプションとして、頭打ちはない。
もし、ユーザーが1秒間に2つ、3つのEAをキャストすることに成功したらどうでしょうか?
時間は一意ではありません - EAを有効にしてターミナルを再起動します - すべて同じ時間になります)
はい、その通りです
もし、ユーザーが1秒間に2つ、3つのEAをキャストすることに成功したらどうでしょうか?
まあ、実際、これはありえないことなんですけどね。
時間は一意ではありません - エキスパートアドバイザーを有効にしてターミナルを再起動します - すべて同じ時間になります)
しかし、ここでもう一曲。EA を再起動する場合、Expert Advisor は、以前に開いたポジションを 維持するために、その魔術師と協力し続ける必要があります。だから、記憶することは問題ないでしょう。
まあ、実際にはあまりあり得ないことなんですけどね。
これは違う話です。再起動する場合、Expert Advisorは、以前に開いたポジションを 維持するために、そのマジックを継続する必要があります。だから、覚えていても損はない。
FOREX(変更なしのFORTS)は、このバリアントで止めました。
もし、もっと良いものを思いついた方がいらっしゃいましたら、ぜひお願いします。
エキスパートアドバイザーは
ChartID()
も再起動時に変更され、EAが同じラベルで動作し続けることはできません(保存しない限り)。
パラメータ(入力)およびシンボルにおいて、EAの各コピーが一意であること。
この場合、ラベルを保存する必要はなく、同じExpert Advisor-parametersに同じものが適用されます。
FOREXではこのバージョンに落ち着きました(FORTSは変更なし)。
もし誰かがもっといいものを思いついたら、歓迎しますよ。
各ポジションに個性的なマジシャンが出題されました。今、ふと思ったんです。最後のチケットを取って、マジコンにセットする方が簡単です。コピー機でも同様に応用しました。サーバー部からポジションのチケットを取り出し、クライアントでマジシャンが開いたポジションに 割り当てました。また、余分な努力なしに動作します。
質問は、各ポジションの個性的なマジシャンに行った。今、私はこう思っています。最後のチケットを取ってマジコンにするのが簡単です。コピー機で似たようなのを使ってました。サーバーからポジションのチケットを取り出し、クライアントでマジシャンが開いたポジション に割り当てました。また、余計な手間をかけずに動作します。
注文ごとに自分のマスターを用意しなければならないのです。
おっしゃるとおり、リロードするとChartIDが変わるので、ターミナルのGlobal Variablesに何も保存する必要はありません。