Meta Traderでのスプレッド取引 - ページ 142

 

フレンズ !!!!もうひと踏ん張りして、指値注文をベースにしたEAを書くことにしましたので、何か参考になれば幸いです。金さんの機能に基づいて、すでにLimit orderを開いています。現在、ティック統計(https://www.mql5.com/ru/forum/125272)に基づく平均と偏差を(より信頼性が高いと思うので)オープンポジションに取得しようとしています。指値注文を価格の後ろに移動させるモジュールと、利益があるポイントに達したときにポジションを閉じるモジュールを実装する必要があります。

 
Scorp1978 >>:

...... Надо будет реализовать модуль передвижки лимит ордера за ценой и модуль закрытия позиций при достижения профита определенного.

以下は、オーダーを移動させるためのコードです。ビールはおごりです

extern bool    Modify =True;
extern int     DistanceSet=14;//в пунктах
//-----------------------------------

if (Modify == true) {//если выключатель модификации включен
//если есть отложенный ордер и нет откр. одноименных позиций и
// расстояние от текущей цены превышает величину DistanceSet - модернизируем
// - т.е. подтягиваем к текущей цене
if(NumberOfOrders(NULL,OP_BUYLIMIT,Magic)>0 &&  NumberOfPositions(NULL,OP_BUY,Magic)<1){
  if( ExistOPNearMarket(NULL,OP_BUYLIMIT,Magic,DistanceSet)==0 ) { 
    for (int isl_= OrdersTotal()-1; isl_>=0; isl_-- )                  {
    if(OrderSelect(isl_,SELECT_BY_POS,MODE_TRADES))                 {
     if(OrderSymbol()==Symbol() )                                   {
      if(OrderType()==OP_BUYLIMIT && OrderMagicNumber()==Magic)      { 
      double pAsk=Ask-DistanceSet*Point;            
      if (sl!=0) double ldStop=pAsk-sl*Point;
      if (tp!=0) double ldTake=pAsk+tp*Point;         
     OrderModify(OrderTicket(), pAsk,ldStop,ldTake, 0, DarkGreen);
      Print("Modify OP_BUYLIMIT ");  Sleep(500);  RefreshRates(); }
      }}}}}
if(NumberOfOrders(NULL,OP_SELLLIMIT,Magic)>0 && NumberOfPositions(NULL,OP_SELL,Magic)<1){      
  if( ExistOPNearMarket(NULL,OP_SELLLIMIT,Magic,DistanceSet)==0 ) { 
   for (int isl= OrdersTotal()-1; isl>=0; isl-- )                  {
    if(OrderSelect(isl,SELECT_BY_POS,MODE_TRADES))                 {
     if(OrderSymbol()==Symbol() )                                   {
      if(OrderType()==OP_SELLLIMIT && OrderMagicNumber()==Magic)      { 
       double pBid=Bid+DistanceSet*Point;  
       if (sl!=0) double ldStop_=pBid+sl*Point;
       if (tp!=0) double ldTake_=pBid-tp*Point; 
     OrderModify(OrderTicket(), Bid+DistanceSet*Point,ldStop_,ldTake_, 0, DarkGreen);
      Print("Modify OP_SELLLIMIT");  Sleep(500);  RefreshRates(); }
      }}}}}            
}//выключатель модификации 
ここで、-関数ExistOPNearMarket()
//この関数は、市場付近の注文またはポジションの存在に関するフラグを返します。
//(マーケットから指定した距離(pips)で)。チェックするオーダーやポジションをより正確に選択することが可能
チェックするオーダーやポジションは、外部パラメータで設定します。
//sy - 楽器の名前です。このパラメータが設定されている場合、この機能は以下のことを確認します。
指定されたシンボルのみ // オーダーまたはポジションをチェックします。""またはNULLは
//current symbol.
//op - 取引操作、注文またはポジションの種類。有効な値:OP_BUY。
// OP_SELL、OP_BUYLIMIT、OP_SELLLIMIT、OP_BUYSTOP、OP_SELLSTOP、または-1。
//デフォルトの値である-1は、あらゆる取引操作を意味します。
//mn - オーダーまたはポジションの識別子(MagicNumber)。初期値 -1
// - 任意の識別子。
//ds - 市場との距離(pips単位)。初期値は1000000です。
//+----------------------------------------------------------------------------+
//| Автор : Ким Игорь                                                                |
//+----------------------------------------------------------------------------+
//| Версия : 19.02.2008 |
//| Описание : Возвращает флаг существования позиции или ордера около рынка |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| sy - наименование инструмента ("" или NULL - текущий символ) |
//| op - торговая операция ( -1 - любая операция) |
//| mn - MagicNumber ( -1 - любой магик) |
//| ds - расстояние в пунктах от рынка ( 1000000 - по умолчанию) |
//+----------------------------------------------------------------------------+
bool ExistOPNearMarket(string sy="", int op=-1, int mn=-1, int ds=1000000) {
  int i, k=OrdersTotal(), ot;
  if (sy=="" || sy=="0") sy=Symbol();
  double p=MarketInfo(sy, MODE_POINT);
  if (p==0) if (StringFind(sy, "JPY")<0) p=0.0001; else p=0.01;
  for (i=0; i<k; i++) {
  if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
  ot=OrderType();
  if ((OrderSymbol()==sy) && (op<0 || ot==op)) {
  if (mn<0 || OrderMagicNumber()==mn) {
  if (ot==OP_BUY || ot==OP_BUYLIMIT || ot==OP_BUYSTOP) {
  if (MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())<ds*p) return(True);
  }
  if (ot==OP_SELL || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) {
  if (MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))<ds*p) return(True);
  }}}}} return(False); }

そしてNumberOfOrders()関数-。
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 28.11.2006                                                     |
//|  Описание : Возвращает количество ордеров.                                 |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любой ордер)                    |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
int NumberOfOrders(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersTotal(), ko=0, ot;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      ot=OrderType();
      if (ot>1 && ot<6) {
        if ((OrderSymbol()==sy || sy=="") && (op<0 || ot==op)) {
          if (mn<0 || OrderMagicNumber()==mn) ko++;
        }}}}  return(ko);}                        
 
rid


どうもありがとう、crunchは私に任意の周期でティックの平均を計算する関数を与えた 私も彼にビールを約束した、私は一度に木箱を埋める必要があります :))) 私も喜びであまり酔っていないことを望む!!!!!!!

 
本日、mt4 Bメールに手紙が届きました。
//-----------------------------
"お客様各位 2010年4月14日より、契約書BT-08の付属書1.3.6項に該当する措置が 実施されますので、ご注意くださいますようお願い申し上げます。
1.3.6 バランスシートの固定化。
1.3.6.1貿易収支の 確定プロセスは、スワップ発生プロセスの前に、日次ベースで実施されるものとする。
この手順は、実行されたすべての取引の財務結果を自動的に計算し、それを取引口座の現在の残高と比較することです。不一致がある場合、取引口座の残高は不一致の金額で修正されます。
この瞬間から、残高を確定させる手続きを毎日行うことになります。
この手順の後、取引口座の財務結果に不一致がある場合、テクニカルサポート部門に連絡することができます ..."
//------------------------------------------------
これ、一体何なのか分からないのですが?
金額の差は何ですか?それは理論的にはどこから来るのでしょうか?
ここで何を言っているのか?
И - "....取引口座の残高が調整されます」 - どのように?

 

間違っていたら申し訳ないが、BT-08の契約書の1.3.6.1項は、同社に顧客をかっさらう機会をまた与えてしまうことになるのだ。
理論的な矛盾はどこから来るのか?
2つの可能性があります。
まず1つ目は、もしあなたの注文が市場価格以外で約定してしまった場合(スパイクなどの失敗がありますよね)--そのような注文の運命を決めるのは、「市場価格以外」とは何かを判断する会社であるということです。しかし、これはあまり頻繁に起こることではなく、それほど悪いことではありません。
2番目のオプションは、トレーダーにとってより重要なものです。フィキシング時に、取引スプレッドを拡大することを想像してみよう。つまり、すべてのオープンポジションで 利益の合計が減少し、この差額が残高から差し引かれることになります。この手続きは、各取引日の終わりに会社が行うもので、隠れたスワップのようなものです...。悪魔も、悪魔も、この会社を止めることはできない...。彼女はCFDの司会者なんですが...。

もちろん、誰もが会社の誠実さを信じたいし、こんな不正はしないと信じたい...時間が解決してくれるだろう...しかし、海外訴訟や高価な弁護士のための資金をどこかで捻出しなければならない......。

 
GEFEL >>:

.....
Второй вариант более важен для трейдера. Представим себе, что на момент фиксинга, компания будет раздвигать торговые спреды. Это значит, что по всем Вашим открытым позициям суммарный профит будет уменьшаться, и эта разница будет списываться с баланса... Такую процедуру компания будет проводить в конце каждого торгового дня, - и это будет похоже на скрытое свопирование........

ただ、思うのは......。
スプレッドは、毎日、セッションの日次クローズでかなり拡大します(日次セッションの間に中断がある商品、すなわち、ほぼすべての商品と先物-当社の取引手法の場合)。
よくわからないのです。この場合、エクイティ(資金)は一時的に減少するが、残高は減少しない。
ポジションはオープンなままで、バランスは一切変えられません。
そして、この「広がった」スプレッド(新しいセッションが開かれたとき)が、残高に計上されるとしたら、理解しがたいことである。
毎晩、詳細なステートメントを保存し、朝の「新しいバランス」と丹念に比較しなければならない・・・。
どうやらそうらしい。

 
友人がテクニカルサポートに質問をぶつけてきました。
回答を得ることができる。
http://www.procapital.ru/showthread.php?p=649145#post649145
 
rid писал(а)>>
知人がテクニカルサポートに質問をぶつけてきた。
回答を得ることができる。
>> http://www.procapital.ru/showthread.php?p=649145#post649145


テクニカルサポートからの回答も読み、何も起こらないことを理解しています(希望的観測)。

 

残高=資金+未決済 ポジションの利益合計...

 

そして、赤で強調された答えの中のこのフレーズは、あなたを悩ませていない.なお、クローズド・トレードはこの影響を受けず、すべての数値がそのまま維持されます。最終的な口座残高のみ確認します。
もちろん、すでに閉じたポジションは 誰も直そうとはしなかった。これは強盗になる。でも、オープンなものには手を出すかもしれない......。
私はBの実を持っていない...と私は一種の気にしないが、あなたは本当に夕方と朝の残高の調整を手配することをお勧めします...。