XMアフィリエイトプログラムは、XMのサービスを紹介することで報酬を得られるプログラムです。EA(エキスパートアドバイザー)を開発してアフィリエイトを行おうとする人向けにも適用可能で、主にトレーダー紹介による報酬とサブアフィリエイトによる報酬の2つの種類が存在します。これらを利用するには、まずXMのパートナーとしてアフィリエイト口座を開設する必要があります。
トレーダー紹介による報酬
XMのトレーダーアフィリエイトでは、自分が紹介したトレーダーが取引を行うと報酬が発生します。このタイプのアフィリエイトは海外FXの典型的なもので、以下のような流れで進められます。
- 上記リンクからXMのパートナー口座を開設
- XMからアフィリエイトリンクを受け取る
- アフィリエイトリンクを自分のウェブサイトやSNSに貼り、集客を行う
- 自分のアフィリエイトリンクから口座開設した人が、自分のトレーダーになる
- トレーダーが取引を行うと、自分のアフィリエイト用口座に報酬が送られてくる
パートナー口座を開設すると、以下のようなバナー広告をサイトに貼ることも可能になります。
サブアフィリエイトによる報酬
XMのサブアフィリエイトでは、自分が紹介したアフィリエイターが報酬を獲得すると、その10%が報酬として発生します。具体的には、以下のような流れで進められます。
- 上記リンクからXMのパートナー口座を開設
- XMからサブアフィリエイトリンクを受け取る
- サブアフィリエイトリンクを自分のウェブサイトやSNSに貼り、集客を行う
- 自分のサブアフィリエイトリンクからパートナー口座開設した人が、自分のサブアフィリエイトパートナーになる
- サブアフィリエイトパートナーが集客をし、そのトレーダーからの報酬が発生すると自分にも報酬が付与される
サブアフィリエイトの利点は、意欲的なアフィリエイターを数人抱えることができれば、その後は自動的に報酬が入ってくることです。XMではトレーダーアフィリエイトが主流ですが、長期的な収益を見据えるなら、サブアフィリエイトも検討する価値があるでしょう。 こちらも、パートナー口座を開設すると以下のようなバナー広告をサイトに貼れるようになります。
XMアフィリエイトと国内FXアフィリエイトの違い
XMTrading(エックスエム)は海外のFX業者であるため、国内FXアフィリエイトと比較して報酬額やサービス内容に違いがあります。国内FXアフィリエイトでは、日本の金融庁の規制に従って運営されており、報酬額やサービス内容が制限されることがあります。一方、XMは海外業者であるため、報酬額が高く設定されていたり、サービス内容が充実していることが特徴です。特に、EAを配布してアフィリエイト収入を得る場合は、海外FXが有利と言えます。
EAを配布してアフィリエイト収入を得る場合
海外FXのアフィリエイトプログラムでは、EA(自動売買プログラム)を配布することによって、報酬を獲得することができます。国内FX業者と比較して、海外FX業者ではレバレッジが高く設定されているため、トレーダーが取引を行う際に利益が大きくなることが期待されます。そのため、EAを利用した取引が活発に行われることで、アフィリエイターが得られる報酬額も増加することが期待できます。 また、海外FX業者は国内FX業者に比べて規制が緩やかであるため、EAを開発・配布する際に制限が少なく、開発者にとっても有利です。これにより、国内FX業者よりも海外FX業者の方が、EAを利用してアフィリエイトを行う際に収益が上がりやすいと言えるでしょう。 このような理由から、EAを配布してアフィリエイト収入を得る場合は、海外FX業者のXMアフィリエイトが有利であると言えます。報酬額が高く、サービス内容が充実している点を活かして、効果的なアフィリエイト活動を展開しましょう。
XMアフィリエイト注意事項
以下は、XMアフィリエイトの注意事項です。アフィリエイト報酬を得るためには、これらのルールや条件を理解し、適切な方法で広告活動を行うことが大切です。正確な情報を提供し、顧客に価値あるサービスを提供することで、長期的な報酬を得られる可能性が高まります。
日本住居者対象外の注意喚起
日本居住者に対してライフタイムコミッション制のFXアフィリエイトを行うためには、「第一種金融商品取引業免許」が必要です。しかし、XMは海外業者であるため、免許がなくても広告活動が可能です。ただし、広告活動の対象は海外の人である必要があります。従って、ウェブサイトを運営する際には「本サイトおよび該当サービスは日本居住者に向けたものではありません」といった文言を入れることが重要です。
ドメイン名
XMアフィリエイトでウェブサイトを運営する際、ドメイン名に「XM」を使用することは禁止されています。これは、公式サイトと誤認されるのを防ぐためです。違反するとアフィリエイトリンクの申請が通らないことがありますので、注意が必要です。
自己アフィリエイト禁止
自分でアフィリエイトリンクを通じて実際のトレード用リアル口座を開設し、取引を行うことは禁止されています。このような行為は自己アフィリエイトと呼ばれ、XMだけでなく、他のFXサイトでも基本的に禁止されています。
ボーナス利用の影響
XMでは魅力的なボーナスが用意されていますが、ボーナスを利用した取引が多い場合、アフィリエイト報酬に影響が出ることがあります。ボーナス金額が大きいほど、取引の正味の損益が小さくなり、アフィリエイト報酬も減少することがあります。ボーナスを適切に活用しつつ、顧客の取引をサポートすることが重要です。
開発したEAを配布して報酬を得る手順
独自の取引システムやEA(Expert Advisor)を開発し、それを他のトレーダーやアフィリエイターに提供することで報酬を得ることもできます。EAを開発し、それを紹介することで、利用者が増えるほど報酬も増えます。開発したEAが優れた成果を出すことができれば、多くのトレーダーやアフィリエイターに興味を持ってもらい、さらに報酬が増える可能性があります。EA開発による報酬獲得の流れは以下の通りです。
- 上記リンクからXMのパートナー口座を開設
- 独自の取引システムやEAを開発
- 開発したEAやシステムを自分のウェブサイトやSNSで紹介
- 興味を持ったトレーダーやアフィリエイターに口座制限を加えたEAを配布する
- EAを指定の口座で利用する人が増えることで報酬が発生
口座制限(口座縛り)をかける方法
配布するEAを特定の口座でしか使用出来ないように制限をかける方法は複数存在します。仕組みや目的に応じて使い分けることも可能ですので、いくつかのパターンをご紹介します。
口座IDで直接制限をかける方法
指定の口座IDでないとEAを動かすことが出来ません。シンプルな方法ですが、配布対象者(ID)ごとにコンパイルする手間がかかります。
MT4用(MQL4)
int number = 123456789; //口座ID
int OnInit(){
if( AccountNumber() != number){
Alert("Init failed\n\n","IDが無効です");
return(INIT_FAILED);
}
Comment("Init succeeded");
return(INIT_SUCCEEDED);
}
MT5用(MQL5)
MQL5では、AccountInfoInteger関数を用います。引数にACCOUNT_LOGINを指定すると口座IDが返ってきます。
int number = 123456789; //口座ID
int OnInit(){
if( AccountInfoInteger(ACCOUNT_LOGIN) != number){
Alert("Init failed\n\n","IDが無効です");
return(INIT_FAILED);
}
Comment("Init succeeded");
return(INIT_SUCCEEDED);
}
サーバー名で制限をかける方法
指定のサーバー名と一致していないとEAを動かすことが出来ません。例えば、「XMTradingのデモ口座でしか動かすことが出来ないEAを配布する」といった目的に有効な方法です。
MT4用(MQL4)
string server = "XMTrading-Demo 3"; //サーバー名
int OnInit(){
if( AccountServer() != server){
Alert("Init failed\n\n","サーバーが無効です");
return(INIT_FAILED);
}
Comment("Init succeeded");
return(INIT_SUCCEEDED);
}
“XMTrading-Demo 3″というのは、XMTraidingのMT4用デモ口座のサーバー名です。このサーバーにログインした場合のみ、EAを稼働させることが可能になります。
MT5用(MQL5)
MQL5では、AccountInfoString関数を用います。引数にACCOUNT_SERVERを指定するとサーバー名が返ってきます。
string server = "XMTrading-MT5"; //サーバー名
int OnInit(){
if( AccountInfoString(ACCOUNT_SERVER) != server){
Alert("Init failed\n\n","サーバーが無効です");
return(INIT_FAILED);
}
Comment("Init succeeded");
return(INIT_SUCCEEDED);
}
“XMTrading-MT5″というのは、XMTraidingのMT5用デモ口座のサーバー名です。このサーバーにログインした場合のみ、EAを稼働させることが可能になります。
デモ口座でしか動かないように制限する方法
先ほどのサーバー名で縛る方法もデモ口座用のサーバーに限定することは可能ですが、以下の方法であればもう少し広く(特定のFX業者に限らず)デモ口座でしか動かないEAを作成することが可能です。
MT4用(MQL4)
MQL4では、IsDemo関数を用います。デモ口座の場合にtureを返す関数ですので、以下のように実装はシンプルです。
int OnInit(){
if(IsDemo() == false){
Alert("Init failed\n\n","デモ口座でしか使用出来ません");
return(INIT_FAILED);
}
Comment("Init succeeded");
return(INIT_SUCCEEDED);
}
MT5用(MQL5)
MQL5では、AccountInfoInteger関数を用います。引数にACCOUNT_TRADE_MODEを指定すると口座の種類を返してくれます。0が返ってきたらデモ口座を意味します。
int OnInit(){
if(AccountInfoInteger(ACCOUNT_TRADE_MODE) !=0){
Alert("Init failed\n\n","デモ口座でしか使用出来ません");
return(INIT_FAILED);
}
Comment("Init succeeded");
return(INIT_SUCCEEDED);
}
認証コードを設定する方法
上記の口座IDで制限する方法のような場合は、対象者ごとにコンパイル必要がありますが、その手間を省く工夫が認証コードを設定する方法です。これは、一度コンパイルしたEAを配布して、口座IDごとに定まる認証コードを別途伝えるという手順になります。
認証コードの入力
まず、EAのインプット画面に認証コードの入力欄を用意します。
input int key_code = 0; //認証コード
上記のようにinputで認証コードを指定することで、以下のような入力欄を作成できます。
口座IDの取得
次に、口座IDを取得します。MT4とMT5で関数が異なるので、適切な方を使います。
int ID = AccountNumber(); //MT4の場合
int ID = AccountInfoInteger(ACCOUNT_LOGIN);//MT5の場合
IDから認証コードの生成
認証コードの生成方法(計算方法)は様々ありますが、以下のように設定してみます。
int key = StringToInteger(StringSubstr(IntegerToString(ID), 0, 1)) * 2 +
StringToInteger(StringSubstr(IntegerToString(ID), 1, 1)) * 3 +
StringToInteger(StringSubstr(IntegerToString(ID), 2, 1)) * 4 +
StringToInteger(StringSubstr(IntegerToString(ID), 3, 1)) * 5 +
StringToInteger(StringSubstr(IntegerToString(ID), 4, 1)) * 6 +
StringToInteger(StringSubstr(IntegerToString(ID), 5, 1)) * 7 +
StringToInteger(StringSubstr(IntegerToString(ID), 6, 1)) * 8 +
StringToInteger(StringSubstr(IntegerToString(ID), 7, 1)) * 9;
認証コードの確認
インプットで入力した認証コード(key_code)と、IDから計算した認証コード(key)が一致するか確認して、一致した場合のみEAが稼働するように設定します。
int OnInit(){
if(key!= key_code){
Alert("Init failed\n\n","認証コードが不正です");
return(INIT_FAILED);
}
Comment("Init succeeded");
return(INIT_SUCCEEDED);
以上が、認証コードを用いた制限方法です。
その他の認証コード生成方法
認証コードの生成方法は無数に考えられますか、いくつか他のパターンもご紹介しておきます。
奇数桁の数字の和と偶数桁の数字の和をそれぞれ計算し、その和を3倍
例:abcdefgh → (a+c+e+g) + 3×(b+d+f+h)
int ID = 12345678;
int oddSum = StringToInteger(StringSubstr(IntegerToString(ID), 0, 1)) +
StringToInteger(StringSubstr(IntegerToString(ID), 2, 1)) +
StringToInteger(StringSubstr(IntegerToString(ID), 4, 1)) +
StringToInteger(StringSubstr(IntegerToString(ID), 6, 1));
int evenSum = StringToInteger(StringSubstr(IntegerToString(ID), 1, 1)) +
StringToInteger(StringSubstr(IntegerToString(ID), 3, 1)) +
StringToInteger(StringSubstr(IntegerToString(ID), 5, 1)) +
StringToInteger(StringSubstr(IntegerToString(ID), 7, 1));
int key = oddSum + 3 * evenSum;
各桁の数字にそれぞれ任意の値をかけ、その和を求める
例:abcdefgh → a×7 + b×6 + c×5 + d×4 + e×3 + f×2 + g×1 + h×8
int ID = 12345678;
int key = StringToInteger(StringSubstr(IntegerToString(ID), 0, 1)) * 7 +
StringToInteger(StringSubstr(IntegerToString(ID), 1, 1)) * 6 +
StringToInteger(StringSubstr(IntegerToString(ID), 2, 1)) * 5 +
StringToInteger(StringSubstr(IntegerToString(ID), 3, 1)) * 4 +
StringToInteger(StringSubstr(IntegerToString(ID), 4, 1)) * 3 +
StringToInteger(StringSubstr(IntegerToString(ID), 5, 1)) * 2 +
StringToInteger(StringSubstr(IntegerToString(ID), 6, 1)) * 1 +
StringToInteger(StringSubstr(IntegerToString(ID), 7, 1)) * 8;
前半4桁と後半4桁のそれぞれの和を求め、前半の和を2倍し、後半の和に加える
例:abcdefgh → (a+b+c+d)×2 + (e+f+g+h)
int ID = 12345678;
int sum_front = StringToInteger(StringSubstr(IntegerToString(ID), 0, 1)) +
StringToInteger(StringSubstr(IntegerToString(ID), 1, 1)) +
StringToInteger(StringSubstr(IntegerToString(ID), 2, 1)) +
StringToInteger(StringSubstr(IntegerToString(ID), 3, 1));
int sum_back = StringToInteger(StringSubstr(IntegerToString(ID), 4, 1)) +
StringToInteger(StringSubstr(IntegerToString(ID), 5, 1)) +
StringToInteger(StringSubstr(IntegerToString(ID), 6, 1)) +
StringToInteger(StringSubstr(IntegerToString(ID), 7, 1));
int key = sum_front * 2 + sum_back;
リアル口座の場合のみ認証コードを必要とする方法
これまでに紹介した方法の組み合わせです。デモ口座では認証コードを必要とせず、リアル口座では認証コードが一致しないとEAを稼働できないという制限を加えます。
MT4用(MQL4)
int OnInit(){
if(IsDemo() == false&&key!= key_code){
Alert("Init failed\n\n","認証コードが不正です");
return(INIT_FAILED);
}
Comment("Init succeeded");
return(INIT_SUCCEEDED);
MT5用(MQL5)
int OnInit(){
if(AccountInfoInteger(ACCOUNT_TRADE_MODE) !=0&&key!= key_code){
Alert("Init failed\n\n","認証コードが不正です");
return(INIT_FAILED);
}
Comment("Init succeeded");
return(INIT_SUCCEEDED);
まとめ
この記事では、XMアフィリエイトプログラムを活用し、開発したEAを配布して報酬を得る方法について解説しました。トレーダー紹介やサブアフィリエイトによる報酬の仕組み、EAの配布方法、口座縛りや認証コード設定による制限方法など、詳細な手順を説明しています。これらの情報を活用し、自分のEAを適切に制限しながら効果的に報酬を獲得できるようになることで、XMアフィリエイトプログラムを成功させるための基盤が整います。注意すべき点も押さえつつ、アフィリエイト収入の向上に取り組みましょう。