様々な簡単なエキスパートアドバイザー

こんにちは!
非常に単純なエキスパートアドバイザーを作成しようとしていますが、正しく機能しません。これがアイデアです。

価格が高くなると、それ以前のハイエントリーの買い注文が送られます。
価格が安くなった場合、以前の低エントリーの売り注文が送信されます。

未処理の買い注文があり、価格が前の安値よりも低くなった場合、買い注文は閉じられ、売り注文が開かれます。
未処理の売り注文があり、価格が前の最高値よりも高い場合、売り注文は閉じられ、買い注文は開かれます。

時間枠は1時間です。
これは私が書いたエキスパートアドバイザーです:

// ———————————————– ——————-
// | Reversal.mq4 |
// | Copyright?2006、MetaQuotes Software Corp. |
// | www.metaquotes.net/ |
// ———————————————– ——————-
#property c opyright "Copyright?2006、MetaQuotes Software Corp."
#property link "https://www.metaquotes.net/"

外部ダブルロット= 0.1。

// ———————————————– ——————-
// |エキスパート初期化機能|
// ———————————————– ——————-

int init()
{
int cnt = 0、チケット、合計。
// —-
total = OrdersTotal();
if(合計<1)
{
if(AccountFreeMargin()<(1000 *ロット))
{
印刷( "私たちにはお金がありません – 余白="、AccountFreeMargin());
(0)を返します。
}
if(Ask> High [1])
{
ticket = OrderSend(Symbol()、OP_BUY、Lots、Ask、3,0、Green);
if$ B!J%A%1%C%H> 0)
{
if(OrderSelect(ticket、SELECT_BY_TICKET、MODE_TRADES))
印刷(「注文をオープンに購入:」、OrderOpenPrice());
}
それ以外の
印刷(「購入注文を開く際のエラー:」、GetLastError());
(0)を返します。
}
if(入札<安値[1])
{
ticket = OrderSend(Symbol()、OP_SELL、Lots、Bid、3,0、Red);
if(チケット> 0)
{
if(OrderSelect(ticket、SELECT_BY_TICKET、MODE_TRADES))
印刷(「注文をオープンに販売:」、OrderOpenPrice());
}
それ以外の
印刷( "販売注文を開くときにエラーが発生しました:"、GetLastError());
(0)を返します。
}
(0)を返します。
}
// pr overka na poziciite
(cnt = 0; cnt <total; cnt )の場合
{
OrderSelect(cnt、SELECT_BY_POS、MODE_TRADES);
if(OrderType()<= OP_SELL && OrderSymbol()== Symbol())
{
if(OrderType()== OP_BUY)
{
if(入札<安値[1])
{
OrderClose(OrderTicket()、OrderLots()、Bid、3、Violet);
ticket = OrderSend(Symbol()、OP_SELL、Lots、Bid、3,0、Red);
if(チケット> 0)
{
if(OrderSelect(ticket、SELECT_BY_TICKET、MODE_TRADES))
印刷(「注文をオープンに販売:」、OrderOpenPrice());
}
それ以外の
印刷( "販売注文を開くときにエラーが発生しました:"、GetLastError());
(0 $B!K$rJV$7$^$9!#
}
}
それ以外の
{
if(Ask> High [1])
{
OrderClose(OrderTicket()、OrderLots()、Ask、3、Violet);
ticket = OrderSend(Symbol()、OP_BUY、Lots、Ask、3,0、Green);
if(チケット> 0)
{
if(OrderSelect(ticket、SELECT_BY_TICKET、MODE_TRADES))
印刷(「注文をオープンに購入:」、OrderOpenPrice());
}
それ以外の
印刷(「購入注文を開く際のエラー:」、GetLastError());
(0)を返します。
}
}
}
}
(0)を返します。
}

// 終わり。

エキスパートは買い注文のみを開き、H1の時間枠で作業することを継ぎ合わせていません。
どうぞよろしくお願いいたします。


ソニャド

私はあなたのコードを調べていませんが、私から飛び出しているのはinit()関数ですべてをコーディングしたということです。コードのその部分は実行時に一度だけ訪問されます。したがって、EAを起動したときに一度だけ実行されます。

からあなたのコードの行を変更します。

int init()

スタート機能へ。

int start()

その後、もう一度試してみてください。


CockeyedCowboyありがとうございます。
それはよりよく機能しますが、それでも買い注文のみ開くので、H1タメフレームではうまくいきません。



36: https://www.mql5.com/en/forum/99960


Originally posted 2019-08-02 19:07:22.

Translate »