ロボットのこと、どうして動かないのか、誰が助けてくれるの? - ページ 6

 
で、何が悪いんだ、せめて見せてくれよ。
 

ここで、私のMT4 ecn、ndd、stp用の関数があります....

一年間一度もエラーがないこと

//+----------------------------------------------------------------------------+

| 注文受付開始機能(BeerGod)|株式会社日立製作所

//+----------------------------------------------------------------------------+

//| パラメータを指定します。|

//| sy - 測定器名 ("" - 現在のシンボル) |...

//| op - 操作|

| ロット|//ll - ロット|

//| SL-ストップレベル

//| tp - テイクレベル

/// mn - MagicNumber|(マジックナンバー

//+----------------------------------------------------------------------------+


bool OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int MagicNumber=0)

{

double MinLl = MarketInfo(Symbol(),MODE_MINLOT)。

double MaxLl = MarketInfo(Symbol(),MODE_MAXLOT)。

ll = NormalizeDouble(ll,2);

if (ll < MinLl) ll = MinLl; else ll = ll;

if (ll > MaxLl) ll = MaxLl; else ll = ll;

if (op == 0) // BUYオープン

{

// フリーファンドが利用可能かどうか確認する

if((AccountFreeMarginCheck(sy,OP_BUY,ll)<=0) || (GetLastError()==134)))

{

Print(sy," ",ll," It is impossible to open order Buy,not enough money.");

return(0)です。

}

RefreshRates()。


// オープンオーダー

int ticketbuy = OrderSend(sy,OP_BUY,ll,MarketInfo(sy,MODE_ASK),Slippage,0,0,Comments,MagicNumber,0,BuyColor);

if(ticketbuy<0)の場合

Print(sy," OpenPosition.OrderSend Buy fail #",GetLastError());

さもなくば

Print(sy," OpenPosition. OrderSend Buy successfully");


// スリープ(ポーズ)。


// 注文の変更(利食い、損切りの設定)

if (sl !=0 || tp !=0)

{

//--- 計算されたSLとTPの価格は正規化する必要があります。

double BSLoss = Normalize Double(MarketInfo(sy,MODE_ASK)-sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS))

double BTProfit = NormalizeDouble(MarketInfo(sy,MODE_ASK)+tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS)) です。

//--- 入力値がゼロの場合、修正価格をゼロに置き換える

if (sl == 0) BSLoss = 0;

if (tp == 0) BTProfit = 0;


bool resbuy = OrderModify (ticketbuy,OrderOpenPrice(),BSLoss,BTProfit,0,StopColor);

if(!resbuy)

Print(sy," OpenPosition.OrderModify Buy fail #",GetLastError());

さもなくば

Print(sy," OpenPosition. OrderModify Buy successfully");

}

}


if (op == 1) // 売りを開く。

{

// フリーファンドの有無の確認

if((AccountFreeMarginCheck(sy,OP_SELL,ll)<=0) || (GetLastError()==134)))

{

Print(sy," ",ll," It is impossible to open order Sell, not enough money.");

return(0)です。

}

RefreshRates()。


// オープンオーダー

int ticketsell = OrderSend(sy,OP_SELL,ll,MarketInfo(sy,MODE_BID),Slippage,0,0,Comments,MagicNumber,0,SellColor);

if(チケットセル<0)

Print(sy," OpenPosition.OrderSend Sell fail #",GetLastError());

さもなくば

Print(sy," OpenPosition. OrderSend Sell successfully");


// スリープ(ポーズ)。


// 注文の変更(利食い、損切りの設定)

if (sl !=0 || tp !=0)

{

//--- 計算されたSLとTPの価格は正規化する必要があります。

double SSLoss = NormalizeDouble(MarketInfo(sy,MODE_BID)+sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS))

double STProfit = NormalizeDouble(MarketInfo(sy,MODE_BID)-tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));

//--- 入力値がゼロの場合、修正価格をゼロに置き換える

if (sl == 0) SSLoss = 0;

if (tp == 0) STProfit = 0;


bool ressell = OrderModify (ticketsell,OrderOpenPrice(),SSLoss,STProfit,0,StopColor).Bool ressell = OrderModify (ticketsell,OrderOpenPrice(),SSLoss,STProfit,0,StopColor);

if(!ressell)

Print(sy," OpenPosition.OrderModify Sell fail #",GetLastError());

さもなくば

Print(sy," OpenPosition. OrderModify Sell successfully");

}

}

return(True)です。

}

//終了

 
P.S. 司会者、ボタンからコードを挿入することができません。
 
Vladimir Zubov:
P.S. モデレーター、ボタンからコードを挿入できません。

コード挿入の オンラインSkypeレッスンを無料(無償)で行っています :)

 if (sl == 0) SSLoss = 0;
 
Karputov Vladimir:

コード挿入の オンラインSkypeレッスンを無料(無償)で行っています :)

//+----------------------------------------------------------------------------+
//|    Функция открытия ордера  (BeerGod)                                      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" - текущий символ)                   |
//|    op - операция                                                           |
//|    ll - лот                                                                |
//|    sl - уровень стоп                                                       |
//|    tp - уровень тейк                                                       |
//|    mn - MagicNumber                                                        |
//+----------------------------------------------------------------------------+

bool OpenPosition(string sy, int op, double ll, double sl=0, double tp=0, int MagicNumber=0)
{
   double MinLl = MarketInfo(Symbol(),MODE_MINLOT);
   double MaxLl = MarketInfo(Symbol(),MODE_MAXLOT);
   ll = NormalizeDouble(ll,2);
   if (ll < MinLl) ll = MinLl; else ll = ll;
   if (ll > MaxLl) ll = MaxLl; else ll = ll;
   
   if (op == 0) // Открытие BUY
   {
      // Проверяем доступность свободных средств
      if((AccountFreeMarginCheck(sy,OP_BUY,ll)<=0) || (GetLastError()==134))
            {
               Print(sy," ",ll," It is impossible to open the order Buy, not enough money.");
               return(0);
            }
      RefreshRates();

      // Открываем ордер
      int ticketbuy = OrderSend(sy,OP_BUY,ll,MarketInfo(sy,MODE_ASK),Slippage,0,0,Comments,MagicNumber,0,BuyColor);
         if(ticketbuy<0)
         Print(sy," OpenPosition. OrderSend Buy fail #",GetLastError());
         else
         Print(sy," OpenPosition. OrderSend Buy successfully");

      // Sleep (Pause);

      // Модифицируем ордер (выставляем тейкпрофит и стоплосс)
      if (sl !=0 || tp !=0)
            {
            //--- Вычисленные значения цен SL и TP должны быть нормализованы
            double BSLoss = NormalizeDouble(MarketInfo(sy,MODE_ASK)-sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));
            double BTProfit = NormalizeDouble(MarketInfo(sy,MODE_ASK)+tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));
            //--- Если входящие значения ноль то заменяем цену модификации на ноль
            if (sl == 0) BSLoss = 0;
            if (tp == 0) BTProfit = 0;

            bool resbuy = OrderModify (ticketbuy,OrderOpenPrice(),BSLoss,BTProfit,0,StopColor);
                  if(!resbuy)
                     Print(sy," OpenPosition. OrderModify Buy fail #",GetLastError());
                  else
                     Print(sy," OpenPosition. OrderModify Buy successfully");
            }
   }

   if (op == 1) // Открытие Sell
   {
      // Проверяем доступность свободных средств
      if((AccountFreeMarginCheck(sy,OP_SELL,ll)<=0) || (GetLastError()==134))
            {
               Print(sy," ",ll," It is impossible to open the order Sell, not enough money.");
               return(0);
            }
      RefreshRates();

      // Открываем ордер
      int ticketsell = OrderSend(sy,OP_SELL,ll,MarketInfo(sy,MODE_BID),Slippage,0,0,Comments,MagicNumber,0,SellColor);
         if(ticketsell<0)
         Print(sy," OpenPosition. OrderSend Sell fail #",GetLastError());
         else
         Print(sy," OpenPosition. OrderSend Sell successfully");

      // Sleep (Pause);

      // Модифицируем ордер (выставляем тейкпрофит и стоплосс)
      if (sl !=0 || tp !=0)
            {
            //--- Вычисленные значения цен SL и TP должны быть нормализованы
            double SSLoss = NormalizeDouble(MarketInfo(sy,MODE_BID)+sl*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));
            double STProfit = NormalizeDouble(MarketInfo(sy,MODE_BID)-tp*MarketInfo(sy,MODE_POINT),(int)MarketInfo(sy,MODE_DIGITS));
            //--- Если входящие значения ноль то заменяем цену модификации на ноль
            if (sl == 0) SSLoss = 0;
            if (tp == 0) STProfit = 0;

            bool ressell = OrderModify (ticketsell,OrderOpenPrice(),SSLoss,STProfit,0,StopColor);
                  if(!ressell)
                     Print(sy," OpenPosition. OrderModify Sell fail #",GetLastError());
                  else
                     Print(sy," OpenPosition. OrderModify Sell successfully");
            }
   }
return (True);
}
//End
 
Karputov Vladimir:

コード挿入の オンラインSkypeレッスンを無料(無償)で行っています :)

コードを貼り付けるだけならいいのですが、さらに書き込むとコードが消えてしまいます
 
PHPとMQLの計算をするときに、どこかでエラーが発生するのですが、アセンブラが必要なら助けてください。
 
GIM:
ありがとうございました。

コードライティングについて質問がある場合は、直接またはSkypeで対応します。

ファイル:
GIM.mq4  9 kb
 
Sergey Gritsay:

Ready, コードに関するご質問は、メールまたはSkypeでお願いします。

Alertは、No pricesというメッセージで出てきます。新しいティックを待っている...
 
GIM:
Alertは、No priceというメッセージで出てきます。新しいティックを待つ...

デモ口座でも 問題なく使えて、一発でトレードを開始できました。もっと詳しく教えてほしい。