PROFIからSUPER PROFIへの質問-1. - ページ 21

 
方法を示した。投稿を修正しました。
 
なるほど、ありがとうございます。
MQLでMySQLを本格的に動かすことは(私のDLLを使わずに)忘れてもよさそうです...残念...。
 

図書館の何がいけないのか?

ポインタリターンでは、静的かつ同一プロセス内であることが必要です。

 
Zhunko:

図書館の何がいけないのか?

もしあなたが独自のDLLを作るなら、コードの一部をMQLに、一部をlibeに分割するのは意味がありません。すべてのMySQLはこのDLLの中に入ることになります。

 
皆さん、こんにちは。何かアドバイスはありますか?VPS Windows Web Server 2008 32 bit - not R2 (RAM 256) - it will work for MT4 ?
 
sergeev:

独自のDLLを作成する場合、コードの一部をMQLに、一部をlibに分割するのは意味がありません。

もちろんです!(笑できればMQLで書く必要は全くない。ほとんどすべてがDLLに含まれています。アプリケーションにすべてを移し始める。リモートで端末を管理する
 

分数列挙のアルゴリズム

I). というように、分数を列挙するアルゴリズムを見つけることが要求される。

A+B+C+n+...= 100%

集合{A, B, C, n} からの各要素は、標準的な基準:最大および最小の側面の制約と、タイプ:開始、停止、急勾配の増分ステップを持つ必要があります。

問題の 一例です。

集合が与えられると

Y{A,B,C,n}です。

このセットの各要素は、-100%から+100%まで、10%刻みで変化させることができます。すべての要素のモジュロの 合計は100%に等しくなければならない:A+B+C+n=100%。

A, B, C, n の間のすべての可能な分数の分布を記述する行列 D(x,number_of_elements_multiple_Y) を求めよ、例えば次のようになる。

A B C

100 0 0

90 10 0

90 0 10

80 10 10

80 0 20

...

不正確な所見の例

A B C

-50 30 120-要素Cが100%の限界値より大きい。

35 30 35- ステップは10%に等しくない

70 30 10- 合計が100%にならないこと

-50 60 90- すべての要素のモジュロの合計が100%に等しくない (50+60+90=200)

II*)になります。 MT5/MT4オプティマイザで集合Nの分数探索の解を求め、集合の各要素の制約が標準制約Start, Step, Stopで与えられ得るようにする。

 


入門編として、この問題の特殊なケースを実装したアルゴリズムを紹介する。

//+------------------------------------------------------------------+
//|                                                  Optimizator.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int A, B, C;
   int handle = FileOpen("test.csv",FILE_WRITE,'\t');
   for(A=0; A<=100;A+=10)
   {
      for(B=0;B<=100-A;B+=10){
         C=100-(A+B);
         FileWrite(handle,A,B,C);      
      }
   }
   FileClose(handle);
  }
//+------------------------------------------------------------------+

見ての通り、最後の要素を除いて、セットの各要素は追加のforループを必要とします。なぜなら、セットの要素数を変更すると、追加のループを挿入したり削除したりしなければならないからです。

 
C-4:


入門編として、この問題の特殊なケースを実装したアルゴリズムを紹介する。

見ての通り、最後の1つを除いたセットの各要素は、追加のforループを必要とします。なぜなら、セットの要素数を変更すると、余分なループを挿入したり削除したりしなければならないからです。


AかBかCのいずれか1つに対して、whileループを1回だけ行う。

その中で、ギャップがないかどうかを分析する

 
sergeev:

A、B、Cのいずれか1つに対してwhileループを1回だけ実行する。

その中で、到達すべきギャップがあるかどうかを分析する。


ポイントは、やはりBとCが互いに結合されることで、そのための新しいループが必要です。この問題は再帰的に解くことができるかもしれないが、もっと簡単なアルゴリズムがあるかもしれない。