スプレッドについて教えてください。 - ページ 2

 
GumRai:

私はあなたが20または30ドルでこれをコード化することができると思います。

そうですね...ありがとうございます...私は最初に私が自由のために何かを見つけることができるかどうかを見てみましょう、私は何も見つからなければ、私は仕事をアップロードします。
 
GumRai:

私は、あなたが20ドルか30ドルでこれをコード化することができると思います。

実は、今、あなたは注文の終了がすでにスプレッドを考慮することを確認したように、私は上記のスクリプトは私のために働くべきだと思います。 ありがとうございます。私はそれに設定する必要があるすべては10ピップスです。それはあなたが言うように、そのショートならASK値を使用して、そのロングならBID値を使ってそれを自動的に閉じて、合計口座利益とすべてのオープンオーダーを閉じます。また、上記のプログラムでは、スリッページ=5とありますが、このスクリプトではどうなのでしょうか? スクリプトが注文を閉じるときにどうなるのでしょうか? それと、これはスクリプトですかEAですか? それとも2つをどう区別するのでしょうか? [どうやったら、そんなにたくさん勉強できるんですか?]
 
tatyawinchu:

非常に明確で、非常に有用です...私はそれがこのような仕事を投稿するために費用がかかりますか?どのように困難なuはそのようなコードがあるかもしれないと評価するだろうか?私が上に掲載されているウェブから取得したコードは、巨大に見えます...私は本当に数千ドルを砲撃することができないことを意味します...


またまたこんにちは。

心配する必要はありません、あなたが望むもののためのコードはそれほど複雑ではないはずです、そして、あなたが仕事を投稿する必要がある場合、あなたがコントロール するものです、あなたはあなたが余裕ができ、それが価値があると思うどのくらいを提供します

一方、私のような場合は、まず無料のオプションを試してみることにします。失うものは何もないし、何人かの友人を得ることができ、その過程で何かを学ぶことができるかもしれません。

乾杯

 
tatyawinchu:

実は、今、あなたは、注文のクローズがすでにスプレッドを考慮することを確認したように、私は上記のスクリプトが私のために働くと思います...ありがとう...私はそれに設定する必要があるすべては10ピップです...そして、あなたが言うように、そのショートならASK値、そのロングならBID値を使って自動的にそれを閉じます...と口座利益としてその合計が、すべてのオープンオーダーをクローズさせます...。また、上記のプログラムでは、スリッページ=5とありますが、このスクリプトではどうなのでしょうか? スクリプトが注文を閉じるときにどうなるのでしょうか? それと、これはスクリプトですかEAですか? それとも2つをどう区別するのでしょうか? [とか、スクリプトなのかEAなのか?]


また、こんにちは。

いつものように、良いニュースと悪いニュースがあります。悪い知らせが先か、良い知らせが先か?

EAが口座利益に基づいて取引を終了するためには、取引を行う前に口座の純資産が どうなっていたかを知る必要があります。何か意味があるのでしょうか?

もし、比較する出発点がない、あるいは比較するものがない場合、EAは口座利益がマイナスである限り、決して取引を終了しませんし、口座利益がプラスで100以上、あるいは限度額がある場合は、すべての取引を直ちに終了させます。

これは何か意味があるのでしょうか?

スリッページとは、市場価格で新規または決済した場合に、再提示せずにブローカーに発注または決済を許可する価格からの最大乖離量です。ビッドとアスクが連続的に変化するので、注文がサーバーに届くまでに、価格(ビッドまたはアスク)の値がスリッページ制限内にあれば注文は処理され、なければ再提示されます。

そう、あなたのコードはEAなのです。スクリプトは通常一度だけ実行され、新しいティックを取得し、コードを実行し、終了します。EAは、あなたが実行させる限り、継続的に実行されます。

どうやって区別するのですか?スクリプトとEAは同じような動きをするので、見分けるのが難しい場合があります。新しいスクリプトが作成されると、次のようになります。

//+------------------------------------------------------------------+
//|                                                   TestScript.mq4 |
//|                             Copyright 2014, 3D@tm Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, 3D@tm Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   
  }
//+------------------------------------------------------------------+

OnStart機能しかなく、「Script program start function」と表示されているのがわかります。

話は戻りますが、注文がないときに口座の純資産をチェックし、それを基準にするEAを実行すると、口座ごとに希望の利益に達したときにすべての注文を終了させることができます。

AUDUSDペアの1ピップはGBPJPYペアの1ピップと同じ値ではありません。

このEAのために特定のシンボルを探しているのですか、それともどんなシンボルであっても、口座ごとの利益に達したときにすべての注文を閉じるだけなのでしょうか?

また、ストップロスは口座の資本に関連するものなのか、それとも注文やペアに関連するものなのでしょうか?

複雑そうに聞こえますが、それほど複雑ではありません。私たちのコンピューターはとても頭が悪いので、正確に指定しない限り、迷子になってしまうのです。

これは何かお役に立ちましたか?そうであれば幸いです。

ありがとうございました。

 

Thrdel

AccountProfit()は現在のオープントレードの利益合計を返すのは確かです。ドキュメントを見る限り、明らかではありませんが。

 
GumRai:

Thrdel

AccountProfit()は現在のオープントレードの利益合計を返すのは確かです。しかし、ドキュメントからは明らかではありません。


うーん...

 AccountProfit() 

その代わり、私は...

double AccProfits=AccProfits+OrderProfit();

何を実現したいかによりますが

 
GumRai:

Thrdel

AccountProfit()は現在のオープントレードの利益合計を返すのは確かです。しかし、ドキュメントからは明らかではありません。


GumRai さん、こんにちは。

あなたの言うとおりです。ドキュメントではあまり明らかではありませんが、私はそれをテストし、再び、あなたの言うとおり、それは開いているすべての注文の利益/損失の合計であることがわかりました。

ナイスキャッチです。ありがとうございます。

手動で開いた注文を管理したいだけで、他のEAが出したかもしれない注文から選択する必要がある場合は、まだAccount Profitは使えませんね。

マジックナンバー=0で選択すればいいんでしょうね。そして、deysmacro さんが提案されたように、利益を合計する。

という風に考えているのですが、どうでしょうか?皆さんはどう思われますか?

//+------------------------------------------------------------------+
//|                                       CloseOrdersOnProfit_v1.mq4 |
//|                             Copyright 2014, 3D@tm Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, 3D@tm Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//---
#include <stdlib.mqh>
//---
#define  RETRYCOUNT    10
#define  RETRYDELAY    500
#define  LONG          1
#define  SHORT         -1
#define  ALL           0
//---
extern int     Slippage=3;
input  double  ProfitTarget=100.0;
input  double  StopLossLimit=50.0;
input  bool    WriteScreenshots=true;
//---
double StartEquity=0;
int    myOrders;
//===================================================================
/*
This EA will manage manually placed orders and skip the orders that
have a magic number different from zero.
If the Profit target - the sum of profit/loss on all orders (except
orders placed by other EA's ) is reached, all those orders are
closed.
If the maximum amount of money allowed for a loss is reached, EA
will close all those orders and an alert will pop up.
*/
//===================================================================
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(Digits==3 || Digits==5) Slippage*=10;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- count orders manually placed (no magic number)
   CountMyOrders();
//--- reset account equity / take a reference point
   if(myOrders<1)
     {
      StartEquity=AccountEquity();
      //--- no orders detected, wait for orders to be placed
      return;
     }
//--- calculate profit
   double myProfit=CalculateProfit();
//--- if profit target reached, exit all
   if(myProfit>=ProfitTarget)
     {
      ExitAll(ALL);
      Alert("Orders closed due to profit target reached");
     }
//--- exit if stop limit reached
   if(StartEquity-AccountEquity()>=StopLossLimit)
     {
      ExitAll(ALL);
      Alert("Orders closed due to stop loss limit reached");
     }

   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CountMyOrders()
  {
   myOrders=0;
   for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)
     {
      if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==false)
         Print("Failed to select order, error : "+ErrorDescription(GetLastError()));
      //skip orders placed by other EA's
      if(OrderMagicNumber()>0)continue;
      if(OrderType()==OP_BUY || OrderType()==OP_SELL)
        {
         myOrders++;
        }
     }
   return(myOrders);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double CalculateProfit()
  {
   double Profit=0;
   for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)
     {
      if(OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)==false)
         Print("Failed to select order, error : "+ErrorDescription(GetLastError()));
      //skip orders placed by other EA's
      if(OrderMagicNumber()>0)continue;
      if(OrderType()==OP_BUY || OrderType()==OP_SELL)
        {
         Profit=Profit+OrderProfit();
        }
     }
   return(Profit);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ExitAll(int direction)
  {

   string total=IntegerToString(OrdersTotal(),0,0);

   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      Comment(StringConcatenate("Closing trade #",(i+1)));
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
         Print("Failed to select order, error : "+ErrorDescription(GetLastError()));
      //skip orders placed by other EA's
      if(OrderMagicNumber()>0)continue;
      //---
      if(OrderType()==OP_BUY &&(direction==LONG ||  direction==ALL)) { Exit(OrderSymbol(),OrderTicket(),LONG,OrderLots(),Blue); }
      if(OrderType()==OP_SELL &&(direction==SHORT|| direction==ALL)) { Exit(OrderSymbol(),OrderTicket(),SHORT,OrderLots(),Red); }
     }
   Comment(StringConcatenate(total," trades closed."));
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Exit(string symb ,int ticket,int dir,double volume,color clr,int t=0)
  {
   int i=0,j=0,cmd=0;
   double prc=0,sl=0,tp=0,lots=0;
   string cmt;
   double bid=MarketInfo(symb,MODE_BID);
   double ask=MarketInfo(symb,MODE_ASK);
   bool closed;

   Print("Exit("+IntegerToString(dir,0,0)+","+DoubleToStr(volume,3)+","+IntegerToString(t,0,0)+")");

   for(i=0; i<RETRYCOUNT; i++) 
     {
      for(j=0;(j<50) && IsTradeContextBusy(); j++)
         Sleep(100);
      RefreshRates();

      if(dir==LONG) 
        {
         prc=bid;
        }
      if(dir==SHORT) 
        {
         prc=ask;
        }
      Print("Exit: prc="+DoubleToStr(prc,Digits));

      closed=OrderClose(ticket,volume,prc,Slippage,clr);
      if(closed)
        {
         Print("Trade closed");
         Screenshot("Exit");

         return (true);
        }

      Print("Exit: error \'"+ErrorDescription(GetLastError())+"\' when exiting with "+DoubleToStr(volume,3)+" @"+DoubleToStr(prc,Digits));
      Sleep(RETRYDELAY);
     }

   Print("Exit: can\'t enter after "+IntegerToString(RETRYCOUNT,0,0)+" retries");
   return (false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Screenshot(string moment_name)
  {
   if(WriteScreenshots)
      WindowScreenShot(WindowExpertName()+"_"+Symbol()+"_M"+IntegerToString(Period(),0,0)+"_"+
                       IntegerToString(Year(),0,0)+"-"+two_digits(Month())+"-"+two_digits(Day())+"_"+
                       two_digits(Hour())+"-"+two_digits(Minute())+"-"+two_digits(Seconds())+"_"+
                       moment_name+".gif",1024,768);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string two_digits(int i)
  {
   if(i<10)
      return ("0"+IntegerToString(i,0,0));
   else
      return (""+IntegerToString(i,0,0));
  }
//+------------------------------------------------------------------+
 
thrdel:


GumRai さん、こんにちは。

ドキュメントからはあまりわかりませんが、テストしてみたところ、やはりおっしゃるとおり、開いているすべての注文の損益を合計したものでした。

ナイスキャッチです。ありがとうございます。

手動で開いた注文を管理したいだけで、他のEAが出したかもしれない注文から選択する必要がある場合は、まだAccount Profitは使えませんね。

マジックナンバー=0で選択すればいいんでしょうね。そして、deysmacro さんが提案されたように、利益を合計する。

という風に考えているのですが、どうでしょうか?皆さんはどう思われますか?


ダメだこりゃ

多くのトレードでprcは適切な価格ではありません。

また

  if(Digits==3 || Digits==5) Slippage*=10;

タイムフレームを何度も変更するような場合は、...。

 
deVries:


this fails ....

多くのトレードにおいて、価格は適切ではありません。

また

タイムフレームを数回変更する場合.......


はいdeVries

すべてが失敗し、私はあなたがそう言うなら、それを行うべきではありませんが、私は本当にあなたの答えに多くの助けを参照してくださいので....

このコードは、うるさい顧客に売るための商用EAではないことを理解していますね? 私たちは何かを解決しようとしているのであって、あなたが手助けをしたくないのなら、少なくとも放っておくべきです。

時間軸を何度か変えれば......え?スリッページが3000000になる?私のMT4にはないようです。信じられないなら、自分でテストしてみろ。

私のテストでは、時間枠を変更すると、EAはdeinit/initサイクルを通過し、OnInitに記載されたコードがあるので、Slippageは毎回30ポイントになるそうです。

誰でもわかるように、時間枠を変えてもSlippageが100万になることはないのです、もしそれがあなたの言いたいことなら。

そして、これは偽の画像ではなく、本物の画像です。

それが役立つことを願っています。

 
thrdel:


再びこんにちは。

いつものように、良いニュースと悪いニュースがあります。悪い知らせが先か、良い知らせが先か?

EAが口座利益に基づいて取引を終了するためには、取引を行う前に口座の純資産がどうなっていたかを知る必要があります。何か意味があるのでしょうか?

もし、比較する出発点がない、あるいは比較するものがない場合、EAは口座利益がマイナスである限り、決して取引を終了しませんし、口座利益がプラスで100以上、あるいは限度額がある場合は、すべての取引を直ちに終了させます。

これは何か意味があるのでしょうか?

スリッページとは、市場価格で新規または決済した場合に、再提示せずにブローカーに発注または決済を許可する価格からの最大乖離量です。ビッドとアスクが連続的に変化するので、注文がサーバーに届くまでに、価格(ビッドまたはアスク)の値がスリッページ制限内にあれば注文は処理され、なければ再提示されます。

そう、あなたのコードはEAなのです。スクリプトは通常一度だけ実行され、新しいティックを取得し、コードを実行し、終了します。EAは、あなたが実行させる限り、継続的に実行されます。

どうやって区別するのですか?スクリプトとEAは同じような動きをするので、見分けるのが難しい場合があります。新しいスクリプトを作成すると、このようになります。

OnStart機能しかなく、「Script program start function」と表示されているのがわかります。

話は戻りますが、注文がないときに口座の純資産をチェックし、それを基準にするEAを実行すると、口座ごとに希望の利益に達したときに、すべての注文をクローズすることができます。

AUDUSDペアの1ピップはGBPJPYペアの1ピップと同じ値ではありません。

このEAのために特定のシンボルを探しているのですか、それともどんなシンボルであっても、口座ごとの利益に達したときにすべての注文を閉じるだけなのでしょうか?

また、ストップロスは口座の資本に関連するものなのか、それとも注文やペアに関連するものなのでしょうか?

複雑そうに聞こえますが、それほど複雑ではありません。私たちのコンピューターはとても頭が悪いので、正確に指定しない限り、迷子になってしまうのです。

これは何かお役に立ちましたか?そうであれば幸いです。

ありがとうございました。


スルデル


またまたこんにちは。

いつものように、良い知らせと悪い知らせがあります。悪い知らせが先か、良い知らせが先か?

EAが口座の利益に基づいて取引を終了するためには、取引を行う前に口座の純資産がどの程度であったかを知る必要があります。何か意味があるのでしょうか?

もし、比較する出発点がない、あるいは比較するものがない場合、EAは口座利益がマイナスである限り、決して取引を終了しませんし、口座利益がプラスで100以上、あるいは限度額がある場合は、すべての取引を直ちに終了させます。

これは何か意味があるのでしょうか?

スリッページとは、市場価格で新規または決済した場合に、再提示せずにブローカーに発注または決済を許可する価格からの最大乖離量です。ビッドとアスクが連続的に変化するので、注文がサーバーに届くまでに、価格(ビッドまたはアスク)の値がスリッページ制限内にあれば注文は処理され、なければ再提示されます。

そう、あなたのコードはEAなのです。スクリプトは通常一度だけ実行され、新しいティックを取得し、コードを実行し、終了します。EAは、あなたが実行させる限り、継続的に実行されます。

どうやって区別するのですか?スクリプトとEAは同じような動きをするので、見分けるのが難しい場合があります。新しいスクリプトが作成されると、次のようになります。

OnStart機能しかなく、「Script program start function」と表示されているのがわかります。

話は戻りますが、注文がないときに口座の純資産をチェックし、それを基準にするEAを実行すると、口座ごとに希望の利益に達したときに、すべての注文をクローズすることができます。

AUDUSDペアの1ピップはGBPJPYペアの1ピップと同じ値ではありません。

このEAのために特定のシンボルを探しているのですか、それともどんなシンボルであっても、口座ごとの利益に達したときにすべての注文を閉じるだけなのでしょうか?

また、ストップロスは口座の資本に関連するものなのか、それとも注文やペアに関連するものなのでしょうか?

複雑そうに聞こえますが、それほど複雑ではありません。私たちのコンピューターはとても頭が悪いので、正確に指定しない限り、迷子になってしまうのです。

これは何かお役に立ちましたか?そうであれば幸いです。

乾杯

再びこんにちは

とても明確な返答をありがとうございます。そして、とても親切にしていただきありがとうございます。

「このEAの特定のシンボルを探しているのか、それともシンボルに関係なく、口座ごとの利益が出たときにすべての注文をクローズしてくれればいいのか" = 後半の条件付きが条件です。

"口座ごとの利益に達したときにすべての注文を閉じるだけ"

OK、私は一度に2つのペアを取引します...最初に私は1つのペアで注文を開きます...それが私に反する場合、私は他のペアの順序でそれをオフにヘッジします...。

私は次の事をするEAを探しています。

1)ない順序または1つだけの順序がある場合何もしない

2)それは、2つの注文が実行されている場合にのみ、X利益でクローズする必要があり、それ以外の場合は、1)に移動します。

3) Xをクローズしている間、それは支払われるべきスプレッドを考慮し、Xを純利益と見なすべきである [ これはすでに、あなたが支払わなければならないスプレッドを直接AccountProfit()が否定し、総利益ではなく純利益を示すということを上で説明しました。]

4) 見ての通り、SLとTPは関係ありません。

今、私は完全に無料のものに関してあなたと一緒にいます、さらに、私はコーディングを知りませんが、私が必要とするものの半分以上が上記のEAにすでにあると思います。 私はただ、2つの注文が開いているときだけそれが何をするかを変更する何かを見つけなければなりません。 私はそれがそこにそのFORループで何かをしなければならないと思います... またはそのような何か... =D [ OK, 今私はあなた達がコードを読むことができて、私ができないことを羨んでいます!!!。21世紀には誰もがコーディングを知らなければならないのです >.< ]。

私のニーズを簡単にフローチャートにしてみました。

EAが起動する ---- 注文が0か1になるまで何もしない ---- 2番目の注文がトリガーされると「コールオープン音」を出す ---- 純利益X金額(スプレッド考慮後)で両方の注文をクローズして「コールクローズ音」を出す ]。

もちろん、コールオープンとコールクローズのサウンドファイルは、どんな小さな波形のファイルでも構いません...mt4自体で簡単に入手できます。これらのことは、私が投稿した上記のEAで、いくつかの点を変更することで実現できると思います! へへへ、助けてplz =D