投資 0
全3件 (3件中 1-3件目)
1
とりあえず、MACDを利用したゴールデンクロスやらデッドクロスやらを起点に買い注文、売り注文をするプログラムを作成し、テストしてみる。やはり、売りで損をしているのに、再度売って損をするといったことが多い。その辺をプログラムで修正し、損を繰り返さないように調整したりした。で、2023年1月1日から12月31日まででテストを行ったところ、倍近くに資産が増えるような調整ができた!これはいけるんじゃね?!と2024年1月から2024年2月末までで再度テストを実施。結果・・・・・まいなす〜〜〜〜〜〜〜〜難しい。。。。やはり、なぜ儲かっているのか?なぜ、損しているのか?どういった取引でどう言ったタイミングだから儲かったとか、その辺の分析が必須です。簡単に儲かるプログラムは組めないものですね(笑ということで、FXを勉強するのも並行しなければならないけど、それとは別にAIを使って予想ができないか合わせて検討を続けたいと思います。色々なサイトを見てみると色んな指標を組み合わせて売買のポイントを決めているみたいです。これは、やはり、勉強しかないですね。。。
2024年03月04日
コメント(0)
MT4(MetaTraders4)のプログラムですが、MQL4という言語を使うようです。MQL4って聞いた時、SQLの親戚?って思いましたが、実際の構文はC言語に近い感じと思いました。あと、FXなどの投資を行うという性質上、その分析値を取得する関数が標準であったりするようです。とりあえず、FXやチャート分析について何もわからないと、プログラムを組む前にアルゴリズムも組めないので、FXの勉強を先にする必要がありそうです。FXの勉強はおいおいやっていくとして、とりあえず、ChatGPTにプログラムを作ってもらい、それをみてプログラムの動きを追ってみることにしました。まず、ChatGPTに以下の問いかけをしてみます。MQL4を利用して、円USドル取引で最も利益がでるであろうプログラムを作ってください。すると以下の回答が出てきました。//+------------------------------------------------------------------+//| USDJPY_Trade.mq4|//| Copyright 2024, MetaQuotes Software Corp. |//| http://www.metaquotes.net/ |//+------------------------------------------------------------------+#property strict// パラメーター設定input int fast_ema_period = 12; // MACDの"ファスト"EMAの期間input int slow_ema_period = 26; // MACDの"スロー"EMAの期間input int signal_period = 9; // MACDのシグナルラインの期間input double lot_size = 0.1; // 取引量(ロット)input double stop_loss = 100; // ストップロス(ポイント)input double take_profit = 200; // テイクプロフィット(ポイント)// MACDを初期化int macd_handle;int signal_handle;// 初期化関数void OnInit() { // MACDを設定 macd_handle = iMACD(Symbol(), Period(), fast_ema_period, slow_ema_period, signal_period, PRICE_CLOSE); signal_handle = iMACD(NULL, 0, fast_ema_period, slow_ema_period, signal_period, PRICE_CLOSE);}// 取引関数void OnTick() { // ポジションがすでにある場合は取引しない if (OrdersTotal() > 0) return; // MACDの値を取得 double macd_main = iMACD(NULL, 0, fast_ema_period, slow_ema_period, 0, PRICE_CLOSE, MODE_MAIN, 0); double macd_signal = iMACD(NULL, 0, fast_ema_period, slow_ema_period, 0, PRICE_CLOSE, MODE_SIGNAL, 0); // MACDヒストグラムの値を取得 double macd_histogram = iMACD(NULL, 0, fast_ema_period, slow_ema_period, 0, PRICE_CLOSE, MODE_MAIN, 0) - iMACD(NULL, 0, fast_ema_period, slow_ema_period, 0, PRICE_CLOSE, MODE_SIGNAL, 0); // MACDのクロスオーバーをチェックして取引する if (macd_main > macd_signal && macd_histogram > 0) { // 買いエントリー double entry_price = Ask; double stop_loss_price = entry_price - stop_loss * Point; double take_profit_price = entry_price + take_profit * Point; int ticket = OrderSend(Symbol(), OP_BUY, lot_size, entry_price, 3, stop_loss_price, take_profit_price, "MACD Buy", 0, 0, clrGreen); if (ticket > 0) Print("Buy order placed at price ", entry_price); else Print("Error placing buy order: ", GetLastError()); } else if (macd_main < macd_signal && macd_histogram < 0) { // 売りエントリー double entry_price = Bid; double stop_loss_price = entry_price + stop_loss * Point; double take_profit_price = entry_price - take_profit * Point; int ticket = OrderSend(Symbol(), OP_SELL, lot_size, entry_price, 3, stop_loss_price, take_profit_price, "MACD Sell", 0, 0, clrRed); if (ticket > 0) Print("Sell order placed at price ", entry_price); else Print("Error placing sell order: ", GetLastError()); }}みた感じ、Sampleプログラムをどっかから引っ張ってきた感じを受けますが、とりあえず、ChatGPTからの回答をMetaEditerで入力してみます。とりあえず、コンパイルが通りません(笑まぁ、もしかしたらソースが古いのかもしれませんが、MACD値を取得する関数のパラメータが足りないようです。エラーの内容は以下の通り。'iMACD' - wrong parameters count CHATGPTTEST.mq4 23 19ということで、このエラーをChatGPTに入力し対応してもらいます。以下のエラーが23行目に出ました。対処してください。'iMACD' - wrong parameters count MACD_TEST.mq4 23 19とChatGPTに投げかけると、23行目にある iMACD 関数の呼び出しに間違ったパラメーター数が渡されています。iMACD 関数は以下の形式を取ります:int iMACD(string symbol, int timeframe, int fast_ema_period, int slow_ema_period, int signal_period, int applied_price, int mode, int shift);ここで、mode パラメーターは MODE_MAIN または MODE_SIGNAL を取りますが、使用する際に 0 を指定しています。また、shift パラメーターが必要ですが、指定されていません。修正するために、23行目と24行目の iMACD 関数の呼び出しを修正し、適切なパラメーターを渡します。修正されたコードは次のようになります:// MACDの値を取得double macd_main = iMACD(NULL, 0, fast_ema_period, slow_ema_period, signal_period, PRICE_CLOSE, MODE_MAIN, 0);double macd_signal = iMACD(NULL, 0, fast_ema_period, slow_ema_period, signal_period, PRICE_CLOSE, MODE_SIGNAL, 0);これにより、関数呼び出しのパラメーター数とパラメーターの意味が一致し、エラーが解消されます。と回答がきたので、iMACD関数のパラメータを見直して調整します。23行目と24行目に対して以下のように修正します。macd_handle = iMACD(Symbol(), Period(), fast_ema_period, slow_ema_period, signal_period, MODE_MAIN, PRICE_CLOSE, 0);signal_handle = iMACD(NULL, 0, fast_ema_period, slow_ema_period, signal_period, MODE_SIGNAL, PRICE_CLOSE, 0);上記修正でコンパイルは通るようになりました。それではいよいよ、テストを実行してみます。MT4の画面でストラテジーテスターを表示させ、上記で作成したプログラムを選択し実行してみます。色々条件を変更してみましたが、このままではどうやら動作しないようです。とりあえずは動いたのですが、あくまで動いただけで、正しく動いたわけではないです。さらに、FXの勉強をしつつ、MQL4の勉強も続けていければと思います。
2024年02月24日
コメント(0)
NAS用と思って購入していたパソコンですが、結局、使うことをやめたので、Windows10に戻しました。そこで、このWindows10のパソコンの用途として、MT4でFXを自動取引するためのサーバとして活用しようと思ったわけです。しかし、すべてが初めてなので、何もわからない。とりあえず、今、証券口座を楽天証券で持っているので、Googleで検索してみると、楽天証券はMT4に対応しているようです。無料ということですので、取り合えず、楽天証券でFX口座とMT4口座の開設をしました。その流れで、デモ口座?という架空の取引を行うことができる口座を申し込みました。即日簡単にデモ口座用のIDとパスワードが発行され、使用できるようになりました。また、そのページの中に、MT4のダウンロードリンクもありましたので、ダウンロードしてインストールしました。正直、使い方がまだわからない状態ですが、ぼちぼちと初めていこうと思います。
2024年02月19日
コメント(0)
全3件 (3件中 1-3件目)
1