1. パーセプトロンについて
パーセプトロンについては、こちらのDr. Mark Humphrysの単層ニューラルネットワークを参考にしています。
私は、パーセプトロンの論理を人工知能として考えています。
2. アルゴリズム
2.1. 入力
w1, w2, w3, w4は、最適化によって決定された値を設定する重みです。
input int x1 = 0;//weight1 input int x2 = 0;//weight2 input int x3 = 0;//weight3 input int x4 = 0;//weight4
2.2. パーセプトロン
簡単なEAを作成するために、しきい値はゼロに設定します。出力は変わらず、"発火"の場合は1、"発火しない"場合は0です。

double w1 = x1 - 100;double w2 = x2 - 100; double w3 = x3 - 100; double w4 = x4 - 100; //パーセプトロンの計算(2017/03/18の前)
double a11 = ((iRSI(Symbol(), 0, 12,PRICE_MEDIAN,1))/100-0.5)*2;
double a21 = ((iRSI(Symbol(), 0, 36,PRICE_MEDIAN,1))/100-0.5)*2; double a31 = ((iRSI(Symbol(), 0, 108,PRICE_MEDIAN,1))/100-0.5)*2; double a41 = ((iRSI(Symbol(), 0, 324,PRICE_MEDIAN,1))/100-0.5)*2; double Current_Percptron = (w1 * a11 + w2 * a21 + w3 * a31 + w4 * a41); //パーセプトロンの計算(2017/03/18の前の2バープロセス)
double a12 = ((iRSI(Symbol(), 0, 12,PRICE_MEDIAN,2))/100-0.5)*2;
double a22 = ((iRSI(Symbol(), 0, 36,PRICE_MEDIAN,2))/100-0.5)*2; double a32 = ((iRSI(Symbol(), 0, 108,PRICE_MEDIAN,2))/100-0.5)*2; double a42 = ((iRSI(Symbol(), 0, 324,PRICE_MEDIAN,2))/100-0.5)*2; double Pre_Percptron = (w1 * a12 + w2 * a22 + w3 * a32 + w4 * a42);
このEAではRSIを使用していますが、他のオシレーターでも大丈夫だと思います。RCIやW%Rなども使えます。
2.3. 注文のオープンとクローズ
前のパーセプトロンが0未満で、現在のパーセプトロンが0を超えた場合、ショートポジションがあればそれをクローズします。
そして、EAがロングオーダーを送信します。
if(Pre_Percptron < 0 && Current_Percptron > 0) //ロングシグナル { //ショートポジションがあれば、注文をクローズ if(pos < 0) { ret = OrderClose(Ticket, OrderLots(), OrderClosePrice(), 0); if(ret) pos = 0; //注文クローズが成功した場合、ポジションステータスはゼロ } //ポジションがない場合、ロングオーダーを送信 if(pos == 0) Ticket = OrderSend( _Symbol, // シンボル OP_BUY, // オペレーション Lots, // ボリューム Ask, // 価格 0, // スリッページ 0, // ストップロス 0, // テイクプロフィット Trade_Comment, // コメント MagicNumber,// マジックナンバー 0, // 保留注文の有効期限 Green // 色 ); }
逆に、現在のパーセプトロンが0未満で、前のパーセプトロンが0を超えた場合、ロングポジションがあればそれをクローズします。
そして、EAがショートオーダーを送信します。
3. 最適化
"Slime_Mold_RSI_template.set"を読み込み、モデルには"オープン価格のみ"を選択します。


4. コメントとマジックナンバー
マジックナンバーは最適化に使用した期間を設定しており、このEAはコメントにマジックナンバーを使用します。
string Trade_Comment = IntegerToString(MagicNumber,5,' ') + "Days-Optimization";
