【MT4/5】Meta Trader初心者専用56【EA素人】
■ このスレッドは過去ログ倉庫に格納されています
USDJPYの1分足スキャルピング型EA(自動売買ツール)とサインツールを開発・公開しております。
興味がありましたら見てみてください。
http://dcfvghbjk098.officeblog.jp/archives/7206121.html おはようございます!
EAを使う際、マジックナンバーが重複しないように気を付けてとよく言われますが
例えばですが、同じPC内で
MT4:A ブローカー⇒オアンダ EA⇒○○○(Bと同じEA) マジックナンバー⇒555(Bと同じマジックナンバー)
MT4:B ブローカー⇒楽天証券 EA⇒○○○(Aと同じEA) マジックナンバー⇒555(Aと同じマジックナンバー)
にしていたとします。
マジックナンバーを両者共に同じにしていることによって
支障が出る可能性はあるものなのでしょうか。
それとも、MT4もブローカーも違う場合は
マジックナンバーが同一でも問題ありませんでしょうか。
同じPC内ですと、MT4を分けたとしても
根本のところでは、MT4は繋がっていたりするので(?)
(上記の場合)マジックナンバーは変えた方が
いいということはあるのでしょうか。
おしえてたもれ! P.S.
同じブローカーでもMT4本体を分ければ同一のマジックNoでも問題ない >>7
そういや同一ブローカーのサブ口座だった
(口座番号が違う) 前スレのKu-chartの人、ちゃんと動いたんだろうか… FXDDからダウンロードしてきた過去データ2005~を読み込もうとしているのですが、
デスクトップクラウド上のMT4だけ、読み込むことができません。
ヒストリーセンター>USDJPY1分足を選択ー>インポート>.hstファイルを選択すると
ポップアップには読み込まれるのですが、OKを押してもヒストリーセンターに読み込まれません。
別のローカルマシンでやるとできるのですが、
お名前.comのデスクトップクラウド for FX のメモリ1GBのプランです。
メモリ不足などということも考えられますでしょうか? クラスのメンバ配列にClose[]配列みたいな時系列配列を作ることってできないんだっけ?
たとえば、hoge[]って配列をメンバに持つクラスを作成し、
hoge[0]に適当な値を放り込んだらあとは放置プレーしていても
バーが更新されるたびにhoge[0]に放り込んだ値がhoge[1]に、
さらにバーが更新されればhoge[1]の値がhoge[2]に勝手に移動していってくれる
便利な配列って作れないのかな?
真面目に実装しようとすると新規バーが出現したことを監視・検知したら
for文でぶん回してhoge[]配列の全要素を一つインクリメントしていくという
膨大な操作が必要になるわけだが・・・
こういうのを全自動でやってくれる機能があったらうれしい >>13
クラス内でSetIndexBufferしてArraySetAsSeriesしたら指標配列のように振る舞わない? SetIndexBufferすればいいだけじゃん
何が不満なの >>16
class Ctest
{
public: int test[];
void Ctest(){
SetIndexBuffer(0, test);
ArraySetAsSeries(test, true);
}
~Ctest(){}
}
int OnInit()
{
Ctest *ctest = new Ctest();
return(INIT_SUCCEEDED);
}
void OnTick()
{
ctest.test[0] = 0;
}
たとえばこんなプログラムをEAでバックテストしてみると
コンパイルはうまくいくけど実際にバックテストさせると
Teseting pass stopped due to a critical error in the EA
array out of range in 'Ctest.mp4'
って言われて止まっちゃう。
ArraySizeでtest[]のサイズを調べてみたけどずっと0のままだから
そりゃ止まるのは当然よね
SetIndexBuffer
ArraySetAsSeries
をかけた配列ってバーが更新されるたびに配列サイズが1個ずつ
自動的に増えていくものと思ってたけど違うんだっけ? そもそもEAでは使えない
EAで使いたいなら自力でやるんだな
MQL的にはインジ作ってiCustomで呼べと 自力でやるには
新規データはケツに追加、バッファが足りなくなったらresize
operator[]でケツからアクセス
すればいい SetIndexBufferしたバッファでやってることと同じ dd
EAじゃできないのね
配列の話題が出たついでに聞いておきたいんだけど
test[] = {1, 2, 3, 4}
みたいな配列のうち、先頭から3番目の"3"をピンポイントで削除して
test[] = {1, 2, 4}
みたいに前に詰めるって感じのことはMQL4にはできない?
似たようなことやりたかったら配列処理の専門クラスを作って
そこでいろいろ処理させる以外に方法無い?
C++にはvectorみたいな配列を扱う標準テンプレートライブラリがあって
重宝したんだけどMQL4はそういうの自分で定義しなきゃならないかな、と思って >>20
mt5の標準ライブラリにジェネリックデータコレクションてのが追加されてる。
あんまり出来がよくない(ぶっちゃけ単に好みじゃないw)けど、一旦mt5をインストールして
ソースのあるフォルダ(include/generic)以下をmt4にコピーすれば使うことはできる。 初心者的な質問ですまん。
MT4やMT5のチャートって随時更新されるけど、止める事って出来るのでしょうか?
過去のチャートを見ようとスライドさせてる最中に更新されて現時刻に戻ってしまうんですが、一時停止とかないのかな? mt4 Build 1090を使っています
ストラテジーテスタで複数チャートを同期して表示をしたいです
Period_Converter_Optの最新版かと思われるものを探しましたがどれもうまくいきません
https://gist.github.com/micclly/9451216
ダウングレードも試みましたが、950ではうまくいきませんでした
既存のスクリプトにあるPeriodConveterも試しました
オフラインチャートには作成されますが、開いてみるとデータが最新のまで作成されておりストラテジーテスタには利用できませんでした
どなたか解決法知ってる方教えて下さい>< >>26
何がやりたいのか、イマイチ分からない
複数の時間足のバックテストの結果チャートを、並べて表示したいの? ポインタを使ってクラスのオブジェクトを配列に格納してる。
Ctest *obj[];
ArrayResize(obj, 3);
obj[0] = new Ctest();
obj[1] = new Ctest();
obj[2] = new Ctest();
この配列のうち真ん中のobj[1]が不要になったから削除して前に詰めようと思った。
obj[0]
obj[1]
こういうときどうすればいいと思う?
delete(obj[1])
を実行しただけじゃobj[1]が消えるだけでobj[2]が前に詰めてくれない。
ArrayCopyを使ってつなぎ直すのもいいかなと思ったけど、
> 構造体配列のコピーを禁止する制御が入っているようですがポインタに対しても一律禁止になったようです。
http://mt4program.blogspot.jp/2017/05/mt4-build-1080.html
ポインタ配列に対してはこの方法は使えないっぽい。 ポインタのコピーはできるだろ
しかし、そのブログもひどいね ひどいどころかひどすぎる
たった数行のソースに2つもtypoしてるし、そのエラーメッセージも違ってる
まともに答える気すら萎える >>28
ジェネリックデータコレクションのCArrayListがほぼほぼそのように動作する。
どうやってんだろ?って思ったら単にコピーして詰めてるだけだったけど、、、、
CArrayList<hoge*> array;とすればオブジェクトポインタも扱える。 ■ このスレッドは過去ログ倉庫に格納されています