Все продукты Маркета перед публикацией проходят обязательную предварительную проверку для обеспечения единого стандарта качества. В этой статье мы расскажем о наиболее частых ошибках, которые допускают разработчики в своих технических индикаторах и торговых роботах. А также покажем как самостоятельно проверить свой продукт перед отправкой в Маркет.
私のi3プロセッサ搭載の古いノートパソコンには、MT5がサポートしていないWinXP 32 bitがまだ入っています。最近、メモリを6Gbに増設したので、64bitのOSをインストールしてMT4とMT5を動かしたいのです。Win7とWin8.1、どちらが良いですか?
私は7が好きです。オフィスは8点、10点、7点です。7の端子の方が安定しています。理由は不明だが、7のテスターは弱いPCの方が速い。8kaは全然過渡期的じゃないですね。一番リソースを食うんですよ。10は、自分自身のためにより多くのリソースを必要とします。
私の古い i3プロセッサ搭載の ノートパソコンには、MT5ではサポートされていないWinXP 32bitがインストールされたままでした。最近、メモリを6Gbに増やしたので、MT4とMT5をサポートする64ビットOSをインストールしたいと思っています。Win7とWin8.1ではどちらが良いですか?
ノートパソコンメーカーのホームページで、公式ドライバーがどの最大OSに対応しているかを確認し、それがお好みのOSとなります。ドライバがWin 8.1用であれば、Win 10を試すことができます。もし、ドライバがWin 7で終わってしまったら、あまり選択肢はありません。
こんにちは、助けてください。
このEAにテイクプロフィットを追加し、EA実行時に変更するパラメータを表示する必要があります。
OrderClose'の戻り値に2つの警告が表示されます。 も修正してください。
extern double Lots = 0.1;
extern double MaximumRisk = 0.3;
extern double DecreaseFactor = 100;
double st1,st2;
//+------------------------------------------------------------------+
///オープンポジションの計算
//+------------------------------------------------------------------+
int CalculateCurrentOrders(文字列シンボル)
{
int buys=0,sells=0;
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)ブレーク。
if(OrderSymbol()==Symbol())とする。
{
if(OrderType()==OP_BUY) buys++;
if(OrderType()==OP_SELL) sells++;
}
}
//---- リターンオーダー数
if(buys>0) return(buys);
else return(-sells);
}
//+------------------------------------------------------------------+
//| 最適なロットサイズを計算する
//+------------------------------------------------------------------+
double LotsOptimized()
{
double lot=ロット。
int orders=HistoryTotal(); // ヒストリーの受注総額
int losses=0; // ブレークしないロスオーダーの数
//---- ロットサイズを選択する
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,3)。
//---- 損切り注文の回数を計算する。
if(DecreaseFactor>0)
{
for(int i=orders-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }.
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
//----
if(OrderProfit()>0)ブレーク。
if(OrderProfit()<0) losses++;
}
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
}
//---- ロットサイズを返す
if(lot<0.1) lot=0.1;
return(lot)です。
}
//+------------------------------------------------------------------+
//| 開注文条件のチェック
//+------------------------------------------------------------------+
void CheckForOpen()
{
int res;
if(音量[0]>1) return;
//---- 買う -----------------------
if ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0)))
if ((Open[0]<Open[1])&&(Close[0]<Close[1])
//
{
res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,15,0,", 0,0,Blue) です。
を返します。
}
//- 売り ----------------------
if ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)<iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0))。
if((Open[0]>Open[1])&&(Close[0]>Close[1]))
{
res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,15,0,", 0,0,Red) となります。
を返します。
}
}
//------------Закрытие позиций----------------------------------------
void CheckForClose2()
{
if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
If(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Blue);
//CheckForOpen();
}
//
//+------------------------------------------------------------------+
//|寄り付き注文の条件をチェックする|||etc.
//+------------------------------------------------------------------+
void CheckForClose1()
{
if(音量[0]>1) return;
//損失をチェックする
if ((AccountProfit()<0)&&(MathAbs(AccountProfit())>=(AccountMargin()*MaximumRisk)))
{
CheckForClose2()。
Print("loss", AccountProfit());
}/**/
//---- チェックオーダータイプ
if(OrderType()==OP_BUY)
{
if ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)<iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0))。
if ((Open[0]>Open[1])&&(Close[0]>Close[1]))
CheckForClose2()。
}
if(オーダータイプ()==OP_SELL)
{
if ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0)))
if ((Open[0]<Open[1])&&(Close[0]<Close[1]))
CheckForClose2()。
}
}
//+------------------------------------------------------------------+
//| 機能開始
//+------------------------------------------------------------------+
void start()
{
//---- 現在のシンボルで未決済注文を計算する
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
else CheckForClose1();
//---
}
//+-----------------------------------------------+
SLとTPの計算を追加しましたが、そのチェックを追加するといいと思います。その方法は、記事(https://www.mql5.com/ru/articles/2555#invalid_SL_TP_for_position)で紹介しています。
あなたの警告は重要ではありません。OrderCloseの結果は無視されるだけなので、警告が 表示されます。例えば、CheckForClose2 関数はOrderCloseの 結果を返すようにすることができます。あるいは、そのままでもよい。
もうひとつ、CheckForClose2、CheckForOpenなどの 関数名がおかしいことに気がつきました。そして、貿易業務を行わせているのですね。
皆さん、こんにちは。どなたかEAを編集するのを手伝っていただけませんか?私は、EAが自分で注文を開くのではなく、手動で開いた注文でのみ動作するように、注文開始機能を削除する必要があります。ありがとう ございました。
オーダーオープン機能を削除し、magicを0に設定します。ロボットは手動でオープンしたオーダーをピックアップし、それに従います。もしロボットに個々の注文だけに従ってもらい、一列に並ばないようにしたい場合は、例えば、ロボットがそれぞれのOnChartEventイベントCHARTEVENT_OBJECT_CLICKで作成・処理すべき適切なボタンを押すことによって、買いや売りにエントリーを行う。この場合のMagicは、自身の注文に対してのみ動作するように0より大きくなければならない。
https://www.mql5.com/ru/forum/131859/page9#434297
isTradeTimeString()
isTradeTimeInt()
こんにちは。
こんな不具合も・・・。一応テスト中です!3台のコンピュータのエキスパート。そのうち2つは正確に動作しますが、1つはいつも計算で何らかのバグが発生します。一般的に、ストップロスを 正しく計算できなかったり、誤ったトリガーをかけたりします。
ハードは新しくないが、古くもない。
このようなことに遭遇された方はいらっしゃいますか?
ハードは新しくないが、古くもない。
どなたかお困りの方はいらっしゃいませんか?
3つとも同じブローカー/ディーラーサーバーに接続されているのですか?(つまり、同じ話なのか?)そうでなければ、まずそこを見ることです。