オフラインのチャートでEAを使おうとしています(例えばperiod_converterで作成されたようなもの)。これらはティックを受け取らないので、内部でwhile()ループを使用する必要があります。しかし、数分後、オフラインのチャートは "Waiting for update" と表示され、それ以上更新されません。別のオフライン・チャートを開くと正しく更新され、閉じると元のチャートは次の "Waiting for update" ロックアウトまでしばらくの間OKなので、一種のデッドロックではないかと思うのです。
ストップロスを隠す
どなたか、EAでストップロスやトレーリングストップを隠す方法を教えていただけませんか?(ブローカーにストップロスやトレーリングストップを見られるのが嫌なんです、彼らにとっては標的みたいなものですから)。ありがとうございます。
EAでストップロスやトレーリングストップを隠す方法を教えてください。(ブローカーにストップロスやトレーリングストップを見られるのが嫌で、彼らにとっては標的のようなものです)。ありがとうございます。
コード内でストップ値とターゲット値を定義します。
そして、取引を行った後、取引を行った価格を取得し、新しいティックごとに、ストップまたはターゲットのいずれかにヒットしたかどうかを確認します。
もしヒットしていれば、EAにOrderClose関数を 実行させます。
個人的には、50-100pipsの値動きからかなり離れたところに設定していますが、ブローカーが見ることができるストップを持っています。そうすることで、もし何らかの理由で端末がダウンしても、少なくとも急な動きから保護されます。
ありがとうございました。
Hiachiever
誰かEAでストップロスやトレーリングストップを隠す方法を教えてください。(ブローカーが私のストップロスやトレーリングストップを見るという発想が好きではありません。)ありがとうございます。
あなたが実装しようとしているのは、多くの場合「ソフトストップ」と呼ばれるもので、損益を動的に追跡し、必要なターゲットに到達した時点で注文を閉じるものです - ブローカーが見てスパイクできる「ハードストップ」を置くのとは対照的です...
ある程度のハードストップは必須です(「万が一」のシナリオのために...)しかし、これでも、Fxopenの ような完全に不誠実なブローカーがいる場合は救われません: -。
https://www.forex-tsd.com/forum/commercial-talks/9512-complaints-and-brokers-scam#comment_273270
難しい質問ですね
親愛なる皆様
私はMT4でのプログラミングは初めてです。EAのコードを完成させましたが、テストしたところ、いくつかのエラーが発生しました。
一つは、私のコードがほぼ同時に同じ価格で4つの注文を開きたいのに、私のEAは時々完全に開くことができますが、他の状況は、注文が一つずつ、異なる価格で開かれただけなのです。
![](https://c.mql5.com/forextsd/smiles/cry_smile.png)
この問題を解決するには、次のようにすればいいと思いますか?
if(IsTradeAllowed()==false) Sleep(10000)。
この問題を解決するために、皆さんは私を助けることができますか?
ありがとうございました。
これは私が開発した全ポジションを決済する機能です。非常にシンプルですが、EAがすべてのポジションを決済するのに長い時間がかかるため、決済価格に ばらつきが生じます。
この問題を解決する手助けをしていただけませんか?
ありがとうございました。
void close_all_position_now(int total_order)
{
int ticket=0;
double volume=0, price=0;
for(int i=0;i<total_order;i++)
{
if(オーダーセレクト(i,SELECT_BY_POS,MODE_TRADES)==false)
をブレークします。
// OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if (OrderMagicNumber()==magic_number && OrderType()==0)
{
ticket=OrderTicket();
volume=OrderLots()です。
price=Bid;
OrderClose(ticket,volume,price,slippage,CLR_NONE)。
}
else if (注文マジックナンバー()==マジックナンバー && 注文タイプ()==1)
{
ticket=OrderTicket();
volume=OrderLots()です。
price=Ask;
OrderClose(ticket,volume,price,slippage,CLR_NONE)。
}
else if(OrderMagicNumber()==magic_number && OrderType()>=2)
{
ticket=OrderTicket();
OrderDelete(ticket);
}
}
}
...しかし、EAは全てのポジションをクローズするのに長い時間がかかるため、クローズ価格が変動する可能性があります。
多くのポジションを同じ価格で決済する方法は、2つだけです。
1) 同じTP(またはSL)を持つ。
2) 決済したい合計ロット数で反対側のポジションを建てる。後でCloseBy()を実行することができます。
同じ価格で複数のポジションを持つことは、同じ問題です:または、ペンディングを使用するか、または、ロットの合計の1つのポジションのみを開き、最終的に部分的な閉鎖を管理します。
同じ値段で多くのポジションを決済する方法は2つだけです。
1) 同じTP(またはSL)を持つ。
2) 決済したいロットの合計の大きさで反対側のポジションを建てる。後でCloseBy()を実行することができます。
同じ価格で複数のポジションを建てるのは同じ問題で、ペンディングを使うか、全ロットのうち1つだけを建てて、最終的に部分決済で管理します。Michelさんへ。
コストはどうでしょうか?反対ポジションのスプレッドは必要でしょうか?
EAが全てのポジションを短時間で決済できない理由は何でしょうか?
一度の値動きで3つのポジションを決済できることもあれば、1つのポジションしか決済できないこともあります。
MQL4プログラミング に関連する資料はありますか?EAを実行するためのタイムスケールを知りませんでした。
私はエンジニアなのでC言語プログラミングには詳しいのですが、私のEAは私がプログラミングしたものを完全に実行することはできません。
例えば
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==magic_number && OrderType()==OP_BUY) とするとどうでしょうか。
このような関数は、EAの各サイクルよりも非常に長い実行時間がかかると思いませんか?
Michelさんへ。
コストはどうでしょうか、反対側のポジションのスプレッドは必要でしょうか。
EAがすべてのポジションを短時間で決済できない理由は何ですか? 決済注文が実行されるまでに時間がかかるからでしょうか。
一度の値動きで3つのポジションを決済できることもあれば、1つのポジションしか決済できないこともあります。
MQL4プログラミングに関連する資料はありますか?EAを実行するためのタイムスケールを知りませんでした。
私はエンジニアなのでC言語プログラミングには詳しいのですが、私のEAは私がプログラミングしたものを完全に実行することはできません。
例えば
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==magic_number && OrderType()==OP_BUY)
このような関数は、EAの各サイクルよりも非常に長い時間をかけて実行されると思いますか?多くのブローカーは「フルヘッジ」を許可しており、これは使用される証拠金がロングポジションとショートポジションの差で計算されることを意味します。したがって、フルヘッジされたポジションには使用されるマージンはなく、追加のスプレッドなしで両方(一方が他方を)決済することができます。したがって、通常のポジションを決済する場合、または反対側のポジションを建てる場合、スプレッドは1つしかかかりません。
時間については、コードの実行時間は非常に速く、ブローカーのディーリングデスクの時間とは関係ありません。
オフライン・チャートのエキスパート
こんにちは。
オフラインのチャートでEAを使おうとしています(例えばperiod_converterで作成されたようなもの)。これらはティックを受け取らないので、内部でwhile()ループを使用する必要があります。しかし、数分後、オフラインのチャートは "Waiting for update" と表示され、それ以上更新されません。別のオフライン・チャートを開くと正しく更新され、閉じると元のチャートは次の "Waiting for update" ロックアウトまでしばらくの間OKなので、一種のデッドロックではないかと思うのです。
私が何か間違っているのか、それともMT4の問題なのでしょうか?