その後 めちゃくちゃ苦労しましたが できました
定番? の単純移動平均線のソースを貼っときます
MoreLINQ (https://morelinq.github.io/) に依存しているので
terminal64.exe と同じディレクトリに MoreLinq.dll を置いてください (正直 これが一番悩まされた)
MoreLinq.dll は nuget.exe で入手できます
ちなみに .NET Standard でつくりました
つかれました
// SMACS.mq5
| #import "SMACS.dll" |
| #property indicator_chart_window |
| #property indicator_buffers 1 |
| #property indicator_plots 1 |
| #property indicator_label1 "SMA" |
| #property indicator_type1 DRAW_LINE |
| #property indicator_color1 clrRed |
| #property indicator_style1 STYLE_SOLID |
| #property indicator_width1 1 |
| input int PERIOD = 12; |
| double sma[]; |
| int OnInit() |
| { |
| SetIndexBuffer(0, sma, INDICATOR_DATA); |
| PlotIndexSetString(0, PLOT_LABEL, "SMA(" + IntegerToString(PERIOD) + ")"); |
| return INIT_SUCCEEDED; |
| } |
| int OnCalculate(const int TOTAL, |
| const int PREV, |
| const datetime &T[], |
| const double &O[], |
| const double &H[], |
| const double &L[], |
| const double &C[], |
| const long &TVOL[], |
| const long &VOL[], |
| const int &SP[]) |
| { |
| double c[]; |
| ArrayCopy(c, C); |
| SMACS::sma(sma, c, PERIOD, TOTAL, PREV); |
| return TOTAL; |
}
// SMACS.cs
| using System; |
| using System.Collections.Generic; |
| using System.Linq; |
| using MoreLinq; |
| // PM> Install-Package morelinq -Version 3.1.0 |
| public static class SMACS |
| { |
| public static void sma(double[] sma, double[] c, int period, int total, int prev) |
| { |
| if (prev == 0 || total <= period) |
| { |
| c.WindowRight(period) |
| .Select(xs => xs.Average()) |
| .ToArray() |
| .CopyTo(sma, 0); |
| } |
| else |
| { |
| Array.Copy(c.WindowRight(period) |
| .Skip(prev - 1) |
| .Select(xs => xs.Average()) |
| .ToArray(), 0, sma, prev - 1, total - prev + 1); |
| // Array.Copy(sourceArray, sourceIndex, destinationArray, destinationIndex, length); |
| } |
| } |
取引の機会を逃しています。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
// F#
namespace MyNameSpace
type public MyClass =
static member public MyMethod x =
x + 1
// MQL5
#import "mylib.dll"
void OnStart()
{
MyClass::MyMethod(2);
}
initializing of my-script (USDJPY,M1) failed with code 0